| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 | 
							- /*
 
-  * NetPacksLobby.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 "NetPacksBase.h"
 
- #include "StartInfo.h"
 
- class CServerHandler;
 
- class CVCMIServer;
 
- VCMI_LIB_NAMESPACE_BEGIN
 
- class CCampaignState;
 
- 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;
 
- 	virtual 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;
 
- 	virtual 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;
 
- 	virtual 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
 
- 	} action = NONE;
 
- 	virtual void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h, const int version)
 
- 	{
 
- 		h & action;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbyEndGame : public CLobbyPackToPropagate
 
- {
 
- 	bool closeConnection = false, restart = false;
 
- 	
 
- 	virtual 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
 
- 	virtual 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;
 
- 	virtual 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
 
- 	virtual 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) {}
 
- 	virtual 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<CCampaignState> ourCampaign;
 
- 	virtual void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h, const int version)
 
- 	{
 
- 		h & ourCampaign;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbySetCampaignMap : public CLobbyPackToServer
 
- {
 
- 	int mapId = -1;
 
- 	virtual 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;
 
- 	virtual 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};
 
- 	ui8 what = UNKNOWN;
 
- 	si8 direction = 0; //-1 or +1
 
- 	PlayerColor color = PlayerColor::CANNOT_DETERMINE;
 
- 	virtual void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h, const int version)
 
- 	{
 
- 		h & what;
 
- 		h & direction;
 
- 		h & color;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbySetPlayer : public CLobbyPackToServer
 
- {
 
- 	PlayerColor clickedColor = PlayerColor::CANNOT_DETERMINE;
 
- 	virtual void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h, const int version)
 
- 	{
 
- 		h & clickedColor;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbySetTurnTime : public CLobbyPackToServer
 
- {
 
- 	ui8 turnTime = 0;
 
- 	virtual void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler &h, const int version)
 
- 	{
 
- 		h & turnTime;
 
- 	}
 
- };
 
- struct DLL_LINKAGE LobbySetDifficulty : public CLobbyPackToServer
 
- {
 
- 	ui8 difficulty = 0;
 
- 	virtual 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;
 
- 	virtual 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;
 
- 	
 
- 	virtual void visitTyped(ICPackVisitor & visitor) override;
 
- 	
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & message;
 
- 	}
 
- };
 
- VCMI_LIB_NAMESPACE_END
 
 
  |