| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340 |
- /*
- * PacksForLobby.h, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- #pragma once
- #include "StartInfo.h"
- #include "NetPacksBase.h"
- class CServerHandler;
- class CVCMIServer;
- VCMI_LIB_NAMESPACE_BEGIN
- class CampaignState;
- class CMapInfo;
- struct StartInfo;
- class CMapGenOptions;
- struct ClientPlayer;
- struct DLL_LINKAGE CLobbyPackToPropagate : public CPackForLobby
- {
- };
- struct DLL_LINKAGE CLobbyPackToServer : public CPackForLobby
- {
- virtual bool isForServer() const override;
- };
- struct DLL_LINKAGE LobbyClientConnected : public CLobbyPackToPropagate
- {
- // Set by client before sending pack to server
- std::string uuid;
- std::vector<std::string> names;
- StartInfo::EMode mode = StartInfo::INVALID;
- // Changed by server before announcing pack
- int clientId = -1;
- int hostClientId = -1;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler & h, const int version)
- {
- h & uuid;
- h & names;
- h & mode;
- h & clientId;
- h & hostClientId;
- }
- };
- struct DLL_LINKAGE LobbyClientDisconnected : public CLobbyPackToPropagate
- {
- int clientId;
- bool shutdownServer = false;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & clientId;
- h & shutdownServer;
- }
- };
- struct DLL_LINKAGE LobbyChatMessage : public CLobbyPackToPropagate
- {
- std::string playerName, message;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & playerName;
- h & message;
- }
- };
- struct DLL_LINKAGE LobbyGuiAction : public CLobbyPackToPropagate
- {
- enum EAction : ui8 {
- NONE, NO_TAB, OPEN_OPTIONS, OPEN_SCENARIO_LIST, OPEN_RANDOM_MAP_OPTIONS, OPEN_TURN_OPTIONS, OPEN_EXTRA_OPTIONS
- } action = NONE;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & action;
- }
- };
- struct DLL_LINKAGE LobbyLoadProgress : public CLobbyPackToPropagate
- {
- unsigned char progress;
-
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & progress;
- }
- };
- struct DLL_LINKAGE LobbyEndGame : public CLobbyPackToPropagate
- {
- bool closeConnection = false, restart = false;
-
- void visitTyped(ICPackVisitor & visitor) override;
-
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & closeConnection;
- h & restart;
- }
- };
- struct DLL_LINKAGE LobbyStartGame : public CLobbyPackToPropagate
- {
- // Set by server
- std::shared_ptr<StartInfo> initializedStartInfo = nullptr;
- CGameState * initializedGameState = nullptr;
- int clientId = -1; //-1 means to all clients
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & clientId;
- h & initializedStartInfo;
- bool sps = h.smartPointerSerialization;
- h.smartPointerSerialization = true;
- h & initializedGameState;
- h.smartPointerSerialization = sps;
- }
- };
- struct DLL_LINKAGE LobbyChangeHost : public CLobbyPackToPropagate
- {
- int newHostConnectionId = -1;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler & h, const int version)
- {
- h & newHostConnectionId;
- }
- };
- struct DLL_LINKAGE LobbyUpdateState : public CLobbyPackToPropagate
- {
- LobbyState state;
- bool hostChanged = false; // Used on client-side only
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & state;
- }
- };
- struct DLL_LINKAGE LobbySetMap : public CLobbyPackToServer
- {
- std::shared_ptr<CMapInfo> mapInfo;
- std::shared_ptr<CMapGenOptions> mapGenOpts;
- LobbySetMap() : mapInfo(nullptr), mapGenOpts(nullptr) {}
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & mapInfo;
- h & mapGenOpts;
- }
- };
- struct DLL_LINKAGE LobbySetCampaign : public CLobbyPackToServer
- {
- std::shared_ptr<CampaignState> ourCampaign;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & ourCampaign;
- }
- };
- struct DLL_LINKAGE LobbySetCampaignMap : public CLobbyPackToServer
- {
- CampaignScenarioID mapId = CampaignScenarioID::NONE;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & mapId;
- }
- };
- struct DLL_LINKAGE LobbySetCampaignBonus : public CLobbyPackToServer
- {
- int bonusId = -1;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & bonusId;
- }
- };
- struct DLL_LINKAGE LobbyChangePlayerOption : public CLobbyPackToServer
- {
- enum EWhat : ui8 {UNKNOWN, TOWN, HERO, BONUS, TOWN_ID, HERO_ID, BONUS_ID};
- ui8 what = UNKNOWN;
- int32_t value = 0;
- PlayerColor color = PlayerColor::CANNOT_DETERMINE;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & what;
- h & value;
- h & color;
- }
- };
- struct DLL_LINKAGE LobbySetPlayer : public CLobbyPackToServer
- {
- PlayerColor clickedColor = PlayerColor::CANNOT_DETERMINE;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & clickedColor;
- }
- };
- struct DLL_LINKAGE LobbySetPlayerName : public CLobbyPackToServer
- {
- PlayerColor color = PlayerColor::CANNOT_DETERMINE;
- std::string name = "";
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & color;
- h & name;
- }
- };
- struct DLL_LINKAGE LobbySetSimturns : public CLobbyPackToServer
- {
- SimturnsInfo simturnsInfo;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & simturnsInfo;
- }
- };
- struct DLL_LINKAGE LobbySetTurnTime : public CLobbyPackToServer
- {
- TurnTimerInfo turnTimerInfo;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & turnTimerInfo;
- }
- };
- struct DLL_LINKAGE LobbySetExtraOptions : public CLobbyPackToServer
- {
- ExtraOptionsInfo extraOptionsInfo;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & extraOptionsInfo;
- }
- };
- struct DLL_LINKAGE LobbySetDifficulty : public CLobbyPackToServer
- {
- ui8 difficulty = 0;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & difficulty;
- }
- };
- struct DLL_LINKAGE LobbyForceSetPlayer : public CLobbyPackToServer
- {
- ui8 targetConnectedPlayer = -1;
- PlayerColor targetPlayerColor = PlayerColor::CANNOT_DETERMINE;
- void visitTyped(ICPackVisitor & visitor) override;
- template <typename Handler> void serialize(Handler & h, const int version)
- {
- h & targetConnectedPlayer;
- h & targetPlayerColor;
- }
- };
- struct DLL_LINKAGE LobbyShowMessage : public CLobbyPackToPropagate
- {
- std::string message;
-
- void visitTyped(ICPackVisitor & visitor) override;
-
- template <typename Handler> void serialize(Handler & h, const int version)
- {
- h & message;
- }
- };
- VCMI_LIB_NAMESPACE_END
|