Ver código fonte

attempt to fix the build

SoundSSGood 3 anos atrás
pai
commit
3a3b559a0b
4 arquivos alterados com 11 adições e 14 exclusões
  1. 2 2
      client/NetPacksClient.cpp
  2. 5 6
      lib/NetPacks.h
  3. 1 2
      lib/NetPacksLib.cpp
  4. 3 4
      server/CGameHandler.cpp

+ 2 - 2
client/NetPacksClient.cpp

@@ -295,9 +295,9 @@ void BulkMoveArtifacts::applyCl(CClient * cl)
 			callInterfaceIfPresent(cl, dstLoc.owningPlayer(), &IGameEventsReceiver::artifactMoved, srcLoc, dstLoc);
 	}
 
-	if (artsPack1.has_value())
+	if (swap)
 	{
-		movingArts = artsPack1.value();
+		movingArts = artsPack1;
 		for (auto & slotToMove : movingArts)
 		{
 			auto srcLoc = ArtifactLocation(srcArtHolder, slotToMove.srcPos);

+ 5 - 6
lib/NetPacks.h

@@ -1019,7 +1019,6 @@ struct BulkMoveArtifacts : CArtifactOperationPack
 		LinkedSlots() {}
 		LinkedSlots(ArtifactPosition srcPos, ArtifactPosition dstPos)
 			: srcPos(srcPos), dstPos(dstPos) {}
-		
 		template <typename Handler> void serialize(Handler & h, const int version)
 		{
 			h & srcPos;
@@ -1031,16 +1030,15 @@ struct BulkMoveArtifacts : CArtifactOperationPack
 	TArtHolder dstArtHolder;
 
 	BulkMoveArtifacts() {}
-	BulkMoveArtifacts(TArtHolder srcArtHolder, TArtHolder dstArtHolder) 
-		: srcArtHolder(srcArtHolder), dstArtHolder(dstArtHolder) {}
+	BulkMoveArtifacts(TArtHolder srcArtHolder, TArtHolder dstArtHolder, bool swap) 
+		: srcArtHolder(srcArtHolder), dstArtHolder(dstArtHolder), swap(swap) {}
 
 	void applyCl(CClient * cl);
 	DLL_LINKAGE void applyGs(CGameState * gs);
 
 	std::vector<LinkedSlots> artsPack0;
-	// If the artsPack1 is present then make swap
-	boost::optional<std::vector<LinkedSlots>> artsPack1;
-
+	std::vector<LinkedSlots> artsPack1;
+	bool swap;
 	CArtifactSet * getSrcHolderArtSet();
 	CArtifactSet * getDstHolderArtSet();
 	template <typename Handler> void serialize(Handler & h, const int version)
@@ -1049,6 +1047,7 @@ struct BulkMoveArtifacts : CArtifactOperationPack
 		h & artsPack1;
 		h & srcArtHolder;
 		h & dstArtHolder;
+		h & swap;
 	}
 };
 

+ 1 - 2
lib/NetPacksLib.cpp

@@ -1098,10 +1098,9 @@ DLL_LINKAGE void MoveArtifact::applyGs(CGameState * gs)
 DLL_LINKAGE void BulkMoveArtifacts::applyGs(CGameState * gs)
 {
 	int numBackpackArtifactsMoved = 0;
-	if (artsPack1.has_value())
+	if (swap)
 	{
 		// Swap
-		auto & leftRightPack = artsPack0;
 		auto leftSet = getSrcHolderArtSet();
 		auto rightSet = getDstHolderArtSet();
 		CArtifactFittingSet ArtFittingSet(leftSet->bearerType());

+ 3 - 4
server/CGameHandler.cpp

@@ -3934,7 +3934,7 @@ bool CGameHandler::bulkMoveArtifacts(ObjectInstanceID srcHero, ObjectInstanceID
 	auto psrcHero = getHero(srcHero);
 	auto pdstHero = getHero(dstHero);
 	BulkMoveArtifacts ma(static_cast<ConstTransitivePtr<CGHeroInstance>>(psrcHero), 
-		static_cast<ConstTransitivePtr<CGHeroInstance>>(pdstHero));
+		static_cast<ConstTransitivePtr<CGHeroInstance>>(pdstHero), false);
 	auto slots = &ma.artsPack0;
 
 	// Temporary fitting set for artifacts. Used to select available slots before sending data.
@@ -3981,12 +3981,11 @@ bool CGameHandler::bulkSwapArtifacts(ObjectInstanceID leftHero, ObjectInstanceID
 	auto pleftHero = getHero(leftHero);
 	auto prightHero = getHero(rightHero);
 	BulkMoveArtifacts ma(static_cast<ConstTransitivePtr<CGHeroInstance>>(pleftHero),
-		static_cast<ConstTransitivePtr<CGHeroInstance>>(prightHero));
-	ma.artsPack1 = std::vector<BulkMoveArtifacts::LinkedSlots>();
+		static_cast<ConstTransitivePtr<CGHeroInstance>>(prightHero), true);
 	ma.srcArtHolder = static_cast<ConstTransitivePtr<CGHeroInstance>>(prightHero);
 	ma.dstArtHolder = static_cast<ConstTransitivePtr<CGHeroInstance>>(pleftHero);
 	auto slotsLeftRight = &ma.artsPack0;
-	auto slotsRightLeft = &ma.artsPack1.value();
+	auto slotsRightLeft = &ma.artsPack1;
 
 	auto moveArtsWorn = [this](const CGHeroInstance * srcHero, const CGHeroInstance * dstHero,
 		std::vector<BulkMoveArtifacts::LinkedSlots> * slots) -> void