#pragma once #include #include namespace td { namespace sim { class CommandApply : public protocol::CommandHandler { private: const game::World& m_World; WorldSnapshot& m_Snapshot; public: CommandApply(const game::World& a_World, WorldSnapshot& a_Snapshot); virtual void Handle(const protocol::commands::EndCommand& a_End) override; virtual void Handle(const protocol::commands::PlaceTowerCommand& a_PlaceTower) override; virtual void Handle(const protocol::commands::PlayerJoinCommand& a_PlayerJoin) override; virtual void Handle(const protocol::commands::SpawnTroopCommand& a_SpawnTroop) override; virtual void Handle(const protocol::commands::TeamChangeCommand& a_TeamChange) override; virtual void Handle(const protocol::commands::UpgradeTowerCommand& a_UpgradeTower) override; virtual void Handle(const protocol::commands::UseItemCommand& a_UseItem) override; }; } // namespace sim } // namespace td