send map when arriving late

This commit is contained in:
2025-08-22 12:24:58 +02:00
parent 688b6e93ea
commit 5b6254c690
12 changed files with 52 additions and 16 deletions

View File

@@ -14,7 +14,7 @@ class GameState : public ClientState {
float m_CurrentLerp;
public:
GameState(Client& a_Client, const game::WorldPtr& a_World, std::uint64_t a_StepTime);
GameState(Client& a_Client, const game::WorldPtr& a_World, std::uint64_t a_StepTime, const std::vector<protocol::LockStep> a_FirstSteps);
~GameState() {}
virtual void Update(float a_Delta) override;

View File

@@ -18,6 +18,7 @@ class LobbyState : public ClientState {
virtual void Handle(const protocol::packets::WorldHeaderPacket& a_Packet) override;
virtual void Handle(const protocol::packets::WorldDataPacket& a_Packet) override;
virtual void Handle(const protocol::packets::BeginGamePacket& a_Packet) override;
};
} // namespace client

View File

@@ -22,6 +22,8 @@ class GameState : public ServerState {
virtual void HandlePacket(PlayerID a_Id, const protocol::PacketBase& a_Packet) override;
virtual void Update(float a_Delta) override;
virtual void OnPlayerJoin(PlayerID a_Id, const td::PlayerInfo& a_Info) override;
friend class GameStateHandler;
};

View File

@@ -67,8 +67,6 @@ struct ChatMessage {
std::string m_Text;
};
// TODO: handle players joining in the first second
struct BeginGame {
std::vector<PlayerInfo> m_BlueTeam;
std::vector<PlayerInfo> m_RedTeam;

View File

@@ -39,7 +39,7 @@ class ClientSimulation : public protocol::PacketHandler {
* \brief Live update constructor (continuous game updates)
* \param a_StepTime in ms
*/
ClientSimulation(std::shared_ptr<game::World> a_World, std::uint64_t a_StepTime);
ClientSimulation(std::shared_ptr<game::World> a_World, std::uint64_t a_StepTime, const std::vector<protocol::LockStep>& a_FirstSteps);
/**
* \return the progress [0-1] between two steps

View File

@@ -16,7 +16,7 @@ class ServerSimulation : public protocol::CommandHandler {
game::World& m_World;
std::uint64_t m_StepTime;
std::uint64_t m_CurrentTime;
std::vector<td::protocol::LockStep> m_History;
std::vector<protocol::LockStep> m_History;
using protocol::CommandHandler::Handle;
@@ -27,6 +27,8 @@ class ServerSimulation : public protocol::CommandHandler {
protocol::packets::LockStepsPacket MakePacket();
std::vector<protocol::LockStep> GetFirstLocksteps();
// no checks are done !
virtual void Handle(const protocol::commands::SpawnTroopCommand& a_SpawnTroop) override;