#pragma once #include namespace td { namespace protocol { struct LockStep { std::uint8_t m_CommandNumber; std::vector m_Commands; }; struct LockSteps { std::uint16_t m_FirstFrameNumber; std::array m_LockSteps; }; namespace data { struct PlaceTower { CastleType m_Type : 4; PlayerID m_Placer : 4; CastleCoords m_Position; }; struct UpgradeTower { CastleID m_Tower : 12; std::uint8_t m_Upgrade : 4; }; struct SpawnTroop { EntityType m_Type : 5; std::uint8_t m_Level : 3; EntityCoords m_Position; PlayerID m_Sender; }; struct UseItem { ShopItem m_Item : 4; PlayerID m_User : 4; EntityCoords m_Position; }; struct TeamChange { PlayerID m_Player : 7; Team m_NewTeam : 1; }; } // namespace data } // namespace protocol } // namespace td