| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404 | 
							- /*
 
-  * 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"
 
- #include "../serializer/ESerializationVersion.h"
 
- #include "../texts/MetaString.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
 
- {
 
- 	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;
 
- 	EStartMode mode = EStartMode::INVALID;
 
- 	// Changed by server before announcing pack
 
- 	int clientId = -1;
 
- 	int hostClientId = -1;
 
- 	ESerializationVersion version = ESerializationVersion::CURRENT;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h)
 
- 	{
 
- 		h & uuid;
 
- 		h & names;
 
- 		h & mode;
 
- 		h & clientId;
 
- 		h & hostClientId;
 
- 		h & version;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbyClientDisconnected : public CLobbyPackToPropagate
 
- {
 
- 	int clientId;
 
- 	bool shutdownServer = false;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		h & clientId;
 
- 		h & shutdownServer;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbyChatMessage : public CLobbyPackToPropagate
 
- {
 
- 	std::string playerName;
 
- 	MetaString message;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		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)
 
- 	{
 
- 		h & action;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbyLoadProgress : public CLobbyPackToPropagate
 
- {
 
- 	unsigned char progress;
 
- 	
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		h & progress;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbyRestartGame : public CLobbyPackToPropagate
 
- {
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbyPrepareStartGame : public CLobbyPackToPropagate
 
- {
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 	}
 
- };
 
- 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)
 
- 	{
 
- 		if (!h.saving)
 
- 			h.loadingGamestate = true;
 
- 		h & clientId;
 
- 		h & initializedStartInfo;
 
- 		h & initializedGameState;
 
- 		if (!h.saving)
 
- 			h.loadingGamestate = false;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbyChangeHost : public CLobbyPackToPropagate
 
- {
 
- 	int newHostConnectionId = -1;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h)
 
- 	{
 
- 		h & newHostConnectionId;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbyUpdateState : public CLobbyPackToPropagate
 
- {
 
- 	LobbyState state;
 
- 	bool hostChanged = false; // Used on client-side only
 
- 	bool refreshList = false;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		h & state;
 
- 		h & refreshList;
 
- 	}
 
- };
 
- 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)
 
- 	{
 
- 		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)
 
- 	{
 
- 		h & ourCampaign;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbySetCampaignMap : public CLobbyPackToServer
 
- {
 
- 	CampaignScenarioID mapId = CampaignScenarioID::NONE;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		h & mapId;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbySetCampaignBonus : public CLobbyPackToServer
 
- {
 
- 	int bonusId = -1;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		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)
 
- 	{
 
- 		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)
 
- 	{
 
- 		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)
 
- 	{
 
- 		h & color;
 
- 		h & name;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbySetPlayerHandicap : public CLobbyPackToServer
 
- {
 
- 	PlayerColor color = PlayerColor::CANNOT_DETERMINE;
 
- 	Handicap handicap = Handicap();
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		h & color;
 
- 		h & handicap;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbySetSimturns : public CLobbyPackToServer
 
- {
 
- 	SimturnsInfo simturnsInfo;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		h & simturnsInfo;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbySetTurnTime : public CLobbyPackToServer
 
- {
 
- 	TurnTimerInfo turnTimerInfo;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		h & turnTimerInfo;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbySetExtraOptions : public CLobbyPackToServer
 
- {
 
- 	ExtraOptionsInfo extraOptionsInfo;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		h & extraOptionsInfo;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbySetDifficulty : public CLobbyPackToServer
 
- {
 
- 	ui8 difficulty = 0;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		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)
 
- 	{
 
- 		h & targetConnectedPlayer;
 
- 		h & targetPlayerColor;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbyShowMessage : public CLobbyPackToPropagate
 
- {
 
- 	MetaString message;
 
- 	
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	
 
- 	template <typename Handler> void serialize(Handler & h)
 
- 	{
 
- 		h & message;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbyPvPAction : public CLobbyPackToServer
 
- {
 
- 	enum EAction : ui8 {
 
- 		NONE, COIN, RANDOM_TOWN, RANDOM_TOWN_VS
 
- 	};
 
- 	EAction action = NONE;
 
- 	std::vector<FactionID> bannedTowns;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		h & action;
 
- 		h & bannedTowns;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbyDelete : public CLobbyPackToServer
 
- {
 
- 	enum class EType : ui8 {
 
- 		SAVEGAME, SAVEGAME_FOLDER, RANDOMMAP
 
- 	};
 
- 	EType type = EType::SAVEGAME;
 
- 	std::string name;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h)
 
- 	{
 
- 		h & type;
 
- 		h & name;
 
- 	}
 
- };
 
- VCMI_LIB_NAMESPACE_END
 
 
  |