Selaa lähdekoodia

Change gamestate initialization order - list of owned objects must be
initialized before connecting towns with visiting heroes, but after
generateion of starting heroes

Ivan Savenko 1 vuosi sitten
vanhempi
sitoutus
d0b3bb95b2
2 muutettua tiedostoa jossa 9 lisäystä ja 1 poistoa
  1. 8 1
      lib/gameState/CGameState.cpp
  2. 1 0
      lib/gameState/CGameState.h

+ 8 - 1
lib/gameState/CGameState.cpp

@@ -194,6 +194,7 @@ void CGameState::init(const IMapService * mapService, StartInfo * si, Load::Prog
 	initRandomFactionsForPlayers();
 	randomizeMapObjects();
 	placeStartingHeroes();
+	initOwnedObjects();
 	initDifficulty();
 	initHeroes();
 	initStartingBonus();
@@ -492,8 +493,14 @@ void CGameState::randomizeMapObjects()
 				}
 			}
 		}
+	}
+}
 
-		if (object->getOwner().isValidPlayer())
+void CGameState::initOwnedObjects()
+{
+	for(CGObjectInstance *object : map->objects)
+	{
+		if (object && object->getOwner().isValidPlayer())
 			getPlayerState(object->getOwner())->addOwnedObject(object);
 	}
 }

+ 1 - 0
lib/gameState/CGameState.h

@@ -181,6 +181,7 @@ private:
 	void initGlobalBonuses();
 	void initGrailPosition();
 	void initRandomFactionsForPlayers();
+	void initOwnedObjects();
 	void randomizeMapObjects();
 	void initPlayerStates();
 	void placeStartingHeroes();