| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671 | 
							- /*
 
-  * PacksForServer.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 "ArtifactLocation.h"
 
- #include "NetPacksBase.h"
 
- #include "TradeItem.h"
 
- #include "../int3.h"
 
- #include "../battle/BattleAction.h"
 
- VCMI_LIB_NAMESPACE_BEGIN
 
- struct DLL_LINKAGE GamePause : public CPackForServer
 
- {
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 	}
 
- };
 
- struct DLL_LINKAGE EndTurn : public CPackForServer
 
- {
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 	}
 
- };
 
- struct DLL_LINKAGE DismissHero : public CPackForServer
 
- {
 
- 	DismissHero() = default;
 
- 	DismissHero(const ObjectInstanceID & HID)
 
- 		: hid(HID)
 
- 	{
 
- 	}
 
- 	ObjectInstanceID hid;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & hid;
 
- 	}
 
- };
 
- struct DLL_LINKAGE MoveHero : public CPackForServer
 
- {
 
- 	MoveHero() = default;
 
- 	MoveHero(const int3 & Dest, const ObjectInstanceID & HID, bool Transit)
 
- 		: dest(Dest)
 
- 		, hid(HID)
 
- 		, transit(Transit)
 
- 	{
 
- 	}
 
- 	int3 dest;
 
- 	ObjectInstanceID hid;
 
- 	bool transit = false;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & dest;
 
- 		h & hid;
 
- 		h & transit;
 
- 	}
 
- };
 
- struct DLL_LINKAGE CastleTeleportHero : public CPackForServer
 
- {
 
- 	CastleTeleportHero() = default;
 
- 	CastleTeleportHero(const ObjectInstanceID & HID, const ObjectInstanceID & Dest, ui8 Source)
 
- 		: dest(Dest)
 
- 		, hid(HID)
 
- 		, source(Source)
 
- 	{
 
- 	}
 
- 	ObjectInstanceID dest;
 
- 	ObjectInstanceID hid;
 
- 	si8 source = 0; //who give teleporting, 1=castle gate
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & dest;
 
- 		h & hid;
 
- 	}
 
- };
 
- struct DLL_LINKAGE ArrangeStacks : public CPackForServer
 
- {
 
- 	ArrangeStacks() = default;
 
- 	ArrangeStacks(ui8 W, const SlotID & P1, const SlotID & P2, const ObjectInstanceID & ID1, const ObjectInstanceID & ID2, si32 VAL)
 
- 		: what(W)
 
- 		, p1(P1)
 
- 		, p2(P2)
 
- 		, id1(ID1)
 
- 		, id2(ID2)
 
- 		, val(VAL)
 
- 	{
 
- 	}
 
- 	ui8 what = 0; //1 - swap; 2 - merge; 3 - split
 
- 	SlotID p1, p2; //positions of first and second stack
 
- 	ObjectInstanceID id1, id2; //ids of objects with garrison
 
- 	si32 val = 0;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & what;
 
- 		h & p1;
 
- 		h & p2;
 
- 		h & id1;
 
- 		h & id2;
 
- 		h & val;
 
- 	}
 
- };
 
- struct DLL_LINKAGE BulkMoveArmy : public CPackForServer
 
- {
 
- 	SlotID srcSlot;
 
- 	ObjectInstanceID srcArmy;
 
- 	ObjectInstanceID destArmy;
 
- 	BulkMoveArmy() = default;
 
- 	BulkMoveArmy(const ObjectInstanceID & srcArmy, const ObjectInstanceID & destArmy, const SlotID & srcSlot)
 
- 		: srcArmy(srcArmy)
 
- 		, destArmy(destArmy)
 
- 		, srcSlot(srcSlot)
 
- 	{
 
- 	}
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler>
 
- 	void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & srcSlot;
 
- 		h & srcArmy;
 
- 		h & destArmy;
 
- 	}
 
- };
 
- struct DLL_LINKAGE BulkSplitStack : public CPackForServer
 
- {
 
- 	SlotID src;
 
- 	ObjectInstanceID srcOwner;
 
- 	si32 amount = 0;
 
- 	BulkSplitStack() = default;
 
- 	BulkSplitStack(const ObjectInstanceID & srcOwner, const SlotID & src, si32 howMany)
 
- 		: src(src)
 
- 		, srcOwner(srcOwner)
 
- 		, amount(howMany)
 
- 	{
 
- 	}
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler>
 
- 	void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & src;
 
- 		h & srcOwner;
 
- 		h & amount;
 
- 	}
 
- };
 
- struct DLL_LINKAGE BulkMergeStacks : public CPackForServer
 
- {
 
- 	SlotID src;
 
- 	ObjectInstanceID srcOwner;
 
- 	BulkMergeStacks() = default;
 
- 	BulkMergeStacks(const ObjectInstanceID & srcOwner, const SlotID & src)
 
- 		: src(src)
 
- 		, srcOwner(srcOwner)
 
- 	{
 
- 	}
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler>
 
- 	void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & src;
 
- 		h & srcOwner;
 
- 	}
 
- };
 
- struct DLL_LINKAGE BulkSmartSplitStack : public CPackForServer
 
- {
 
- 	SlotID src;
 
- 	ObjectInstanceID srcOwner;
 
- 	BulkSmartSplitStack() = default;
 
- 	BulkSmartSplitStack(const ObjectInstanceID & srcOwner, const SlotID & src)
 
- 		: src(src)
 
- 		, srcOwner(srcOwner)
 
- 	{
 
- 	}
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler>
 
- 	void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & src;
 
- 		h & srcOwner;
 
- 	}
 
- };
 
- struct DLL_LINKAGE DisbandCreature : public CPackForServer
 
- {
 
- 	DisbandCreature() = default;
 
- 	DisbandCreature(const SlotID & Pos, const ObjectInstanceID & ID)
 
- 		: pos(Pos)
 
- 		, id(ID)
 
- 	{
 
- 	}
 
- 	SlotID pos; //stack pos
 
- 	ObjectInstanceID id; //object id
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & pos;
 
- 		h & id;
 
- 	}
 
- };
 
- struct DLL_LINKAGE BuildStructure : public CPackForServer
 
- {
 
- 	BuildStructure() = default;
 
- 	BuildStructure(const ObjectInstanceID & TID, const BuildingID & BID)
 
- 		: tid(TID)
 
- 		, bid(BID)
 
- 	{
 
- 	}
 
- 	ObjectInstanceID tid; //town id
 
- 	BuildingID bid; //structure id
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & tid;
 
- 		h & bid;
 
- 	}
 
- };
 
- struct DLL_LINKAGE RazeStructure : public BuildStructure
 
- {
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- };
 
- struct DLL_LINKAGE RecruitCreatures : public CPackForServer
 
- {
 
- 	RecruitCreatures() = default;
 
- 	RecruitCreatures(const ObjectInstanceID & TID, const ObjectInstanceID & DST, const CreatureID & CRID, si32 Amount, si32 Level)
 
- 		: tid(TID)
 
- 		, dst(DST)
 
- 		, crid(CRID)
 
- 		, amount(Amount)
 
- 		, level(Level)
 
- 	{
 
- 	}
 
- 	ObjectInstanceID tid; //dwelling id, or town
 
- 	ObjectInstanceID dst; //destination ID, e.g. hero
 
- 	CreatureID crid;
 
- 	ui32 amount = 0; //creature amount
 
- 	si32 level = 0; //dwelling level to buy from, -1 if any
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & tid;
 
- 		h & dst;
 
- 		h & crid;
 
- 		h & amount;
 
- 		h & level;
 
- 	}
 
- };
 
- struct DLL_LINKAGE UpgradeCreature : public CPackForServer
 
- {
 
- 	UpgradeCreature() = default;
 
- 	UpgradeCreature(const SlotID & Pos, const ObjectInstanceID & ID, const CreatureID & CRID)
 
- 		: pos(Pos)
 
- 		, id(ID)
 
- 		, cid(CRID)
 
- 	{
 
- 	}
 
- 	SlotID pos; //stack pos
 
- 	ObjectInstanceID id; //object id
 
- 	CreatureID cid; //id of type to which we want make upgrade
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & pos;
 
- 		h & id;
 
- 		h & cid;
 
- 	}
 
- };
 
- struct DLL_LINKAGE GarrisonHeroSwap : public CPackForServer
 
- {
 
- 	GarrisonHeroSwap() = default;
 
- 	GarrisonHeroSwap(const ObjectInstanceID & TID)
 
- 		: tid(TID)
 
- 	{
 
- 	}
 
- 	ObjectInstanceID tid;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & tid;
 
- 	}
 
- };
 
- struct DLL_LINKAGE ExchangeArtifacts : public CPackForServer
 
- {
 
- 	ArtifactLocation src, dst;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & src;
 
- 		h & dst;
 
- 	}
 
- };
 
- struct DLL_LINKAGE BulkExchangeArtifacts : public CPackForServer
 
- {
 
- 	ObjectInstanceID srcHero;
 
- 	ObjectInstanceID dstHero;
 
- 	bool swap = false;
 
- 	bool equipped = true;
 
- 	bool backpack = true;
 
- 	BulkExchangeArtifacts() = default;
 
- 	BulkExchangeArtifacts(const ObjectInstanceID & srcHero, const ObjectInstanceID & dstHero, bool swap, bool equipped, bool backpack)
 
- 		: srcHero(srcHero)
 
- 		, dstHero(dstHero)
 
- 		, swap(swap)
 
- 		, equipped(equipped)
 
- 		, backpack(backpack)
 
- 	{
 
- 	}
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & srcHero;
 
- 		h & dstHero;
 
- 		h & swap;
 
- 		h & equipped;
 
- 		h & backpack;
 
- 	}
 
- };
 
- struct DLL_LINKAGE AssembleArtifacts : public CPackForServer
 
- {
 
- 	AssembleArtifacts() = default;
 
- 	AssembleArtifacts(const ObjectInstanceID & _heroID, const ArtifactPosition & _artifactSlot, bool _assemble, const ArtifactID & _assembleTo)
 
- 		: heroID(_heroID)
 
- 		, artifactSlot(_artifactSlot)
 
- 		, assemble(_assemble)
 
- 		, assembleTo(_assembleTo)
 
- 	{
 
- 	}
 
- 	ObjectInstanceID heroID;
 
- 	ArtifactPosition artifactSlot;
 
- 	bool assemble = false; // True to assemble artifact, false to disassemble.
 
- 	ArtifactID assembleTo; // Artifact to assemble into.
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & heroID;
 
- 		h & artifactSlot;
 
- 		h & assemble;
 
- 		h & assembleTo;
 
- 	}
 
- };
 
- struct DLL_LINKAGE EraseArtifactByClient : public CPackForServer
 
- {
 
- 	EraseArtifactByClient() = default;
 
- 	EraseArtifactByClient(const ArtifactLocation & al)
 
- 		: al(al)
 
- 	{
 
- 	}
 
- 	ArtifactLocation al;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer&>(*this);
 
- 		h & al;
 
- 	}
 
- };
 
- struct DLL_LINKAGE BuyArtifact : public CPackForServer
 
- {
 
- 	BuyArtifact() = default;
 
- 	BuyArtifact(const ObjectInstanceID & HID, const ArtifactID & AID)
 
- 		: hid(HID)
 
- 		, aid(AID)
 
- 	{
 
- 	}
 
- 	ObjectInstanceID hid;
 
- 	ArtifactID aid;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & hid;
 
- 		h & aid;
 
- 	}
 
- };
 
- struct DLL_LINKAGE TradeOnMarketplace : public CPackForServer
 
- {
 
- 	ObjectInstanceID marketId;
 
- 	ObjectInstanceID heroId;
 
- 	EMarketMode mode = EMarketMode::RESOURCE_RESOURCE;
 
- 	std::vector<TradeItemSell> r1;
 
- 	std::vector<TradeItemBuy> r2; //mode 0: r1 - sold resource, r2 - bought res (exception: when sacrificing art r1 is art id [todo: make r2 preferred slot?]
 
- 	std::vector<ui32> val; //units of sold resource
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & marketId;
 
- 		h & heroId;
 
- 		h & mode;
 
- 		h & r1;
 
- 		h & r2;
 
- 		h & val;
 
- 	}
 
- };
 
- struct DLL_LINKAGE SetFormation : public CPackForServer
 
- {
 
- 	SetFormation() = default;
 
- 	;
 
- 	SetFormation(const ObjectInstanceID & HID, EArmyFormation Formation)
 
- 		: hid(HID)
 
- 		, formation(Formation)
 
- 	{
 
- 	}
 
- 	ObjectInstanceID hid;
 
- 	EArmyFormation formation{};
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & hid;
 
- 		h & formation;
 
- 	}
 
- };
 
- struct DLL_LINKAGE HireHero : public CPackForServer
 
- {
 
- 	HireHero() = default;
 
- 	HireHero(HeroTypeID HID, const ObjectInstanceID & TID)
 
- 		: hid(HID)
 
- 		, tid(TID)
 
- 	{
 
- 	}
 
- 	HeroTypeID hid; //available hero serial
 
- 	ObjectInstanceID tid; //town (tavern) id
 
- 	PlayerColor player;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & hid;
 
- 		h & tid;
 
- 		h & player;
 
- 	}
 
- };
 
- struct DLL_LINKAGE BuildBoat : public CPackForServer
 
- {
 
- 	ObjectInstanceID objid; //where player wants to buy a boat
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & objid;
 
- 	}
 
- };
 
- struct DLL_LINKAGE QueryReply : public CPackForServer
 
- {
 
- 	QueryReply() = default;
 
- 	QueryReply(const QueryID & QID, std::optional<int32_t> Reply)
 
- 		: qid(QID)
 
- 		, reply(Reply)
 
- 	{
 
- 	}
 
- 	QueryID qid;
 
- 	PlayerColor player;
 
- 	std::optional<int32_t> reply;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & qid;
 
- 		h & player;
 
- 		h & reply;
 
- 	}
 
- };
 
- struct DLL_LINKAGE MakeAction : public CPackForServer
 
- {
 
- 	MakeAction() = default;
 
- 	MakeAction(BattleAction BA)
 
- 		: ba(std::move(BA))
 
- 	{
 
- 	}
 
- 	BattleAction ba;
 
- 	BattleID battleID;
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & ba;
 
- 		h & battleID;
 
- 	}
 
- };
 
- struct DLL_LINKAGE DigWithHero : public CPackForServer
 
- {
 
- 	ObjectInstanceID id; //digging hero id
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & id;
 
- 	}
 
- };
 
- struct DLL_LINKAGE CastAdvSpell : public CPackForServer
 
- {
 
- 	ObjectInstanceID hid; //hero id
 
- 	SpellID sid; //spell id
 
- 	int3 pos; //selected tile (not always used)
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & hid;
 
- 		h & sid;
 
- 		h & pos;
 
- 	}
 
- };
 
- /***********************************************************************************************************/
 
- struct DLL_LINKAGE SaveGame : public CPackForServer
 
- {
 
- 	SaveGame() = default;
 
- 	SaveGame(std::string Fname)
 
- 		: fname(std::move(Fname))
 
- 	{
 
- 	}
 
- 	std::string fname;
 
- 	void applyGs(CGameState * gs) {};
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & fname;
 
- 	}
 
- };
 
- struct DLL_LINKAGE PlayerMessage : public CPackForServer
 
- {
 
- 	PlayerMessage() = default;
 
- 	PlayerMessage(std::string Text, const ObjectInstanceID & obj)
 
- 		: text(std::move(Text))
 
- 		, currObj(obj)
 
- 	{
 
- 	}
 
- 	void applyGs(CGameState * gs) {};
 
- 	void visitTyped(ICPackVisitor & visitor) override;
 
- 	std::string text;
 
- 	ObjectInstanceID currObj; // optional parameter that specifies current object. For cheats :)
 
- 	template <typename Handler> void serialize(Handler & h, const int version)
 
- 	{
 
- 		h & static_cast<CPackForServer &>(*this);
 
- 		h & text;
 
- 		h & currObj;
 
- 	}
 
- };
 
- VCMI_LIB_NAMESPACE_END
 
 
  |