Browse Source

Remove unnecessary access to gamestate

Ivan Savenko 5 months ago
parent
commit
e79c8b9fe1

+ 1 - 1
lib/callback/CGameInfoCallback.cpp

@@ -650,7 +650,7 @@ const CMapHeader * CGameInfoCallback::getMapHeader() const
 
 
 bool CGameInfoCallback::hasAccess(std::optional<PlayerColor> playerId) const
 bool CGameInfoCallback::hasAccess(std::optional<PlayerColor> playerId) const
 {
 {
-	return !getPlayerID() || getPlayerID()->isSpectator() || gameState().getPlayerRelations(*playerId, *getPlayerID()) != PlayerRelations::ENEMIES;
+	return !getPlayerID() || getPlayerID()->isSpectator() || getPlayerRelations(*playerId, *getPlayerID()) != PlayerRelations::ENEMIES;
 }
 }
 
 
 EPlayerStatus CGameInfoCallback::getPlayerStatus(PlayerColor player, bool verbose) const
 EPlayerStatus CGameInfoCallback::getPlayerStatus(PlayerColor player, bool verbose) const

+ 1 - 1
lib/mapObjects/CGDwelling.cpp

@@ -223,7 +223,7 @@ void CGDwelling::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstan
 		return;
 		return;
 	}
 	}
 
 
-	PlayerRelations relations = cb->gameState().getPlayerRelations( h->tempOwner, tempOwner );
+	PlayerRelations relations = cb->getPlayerRelations( h->tempOwner, tempOwner );
 
 
 	if ( relations == PlayerRelations::ALLIES )
 	if ( relations == PlayerRelations::ALLIES )
 		return;//do not allow recruiting or capturing
 		return;//do not allow recruiting or capturing

+ 3 - 3
lib/mapObjects/CGHeroInstance.cpp

@@ -370,7 +370,7 @@ TObjectTypeHandler CGHeroInstance::getObjectHandler() const
 void CGHeroInstance::updateAppearance()
 void CGHeroInstance::updateAppearance()
 {
 {
 	auto handler = LIBRARY->objtypeh->getHandlerFor(Obj::HERO, getHeroClass()->getIndex());
 	auto handler = LIBRARY->objtypeh->getHandlerFor(Obj::HERO, getHeroClass()->getIndex());
-	auto terrain = cb->gameState().getTile(visitablePos())->getTerrainID();
+	auto terrain = cb->getTile(visitablePos())->getTerrainID();
 	auto app = handler->getOverride(terrain, this);
 	auto app = handler->getOverride(terrain, this);
 	if (app)
 	if (app)
 		appearance = app;
 		appearance = app;
@@ -556,7 +556,7 @@ void CGHeroInstance::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroIn
 
 
 	if (ID == Obj::HERO)
 	if (ID == Obj::HERO)
 	{
 	{
-		if( cb->gameState().getPlayerRelations(tempOwner, h->tempOwner) != PlayerRelations::ENEMIES)
+		if( cb->getPlayerRelations(tempOwner, h->tempOwner) != PlayerRelations::ENEMIES)
 		{
 		{
 			//exchange
 			//exchange
 			gameEvents.heroExchange(h->id, id);
 			gameEvents.heroExchange(h->id, id);
@@ -581,7 +581,7 @@ void CGHeroInstance::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroIn
 
 
 			ObjectInstanceID boatId;
 			ObjectInstanceID boatId;
 			const auto boatPos = visitablePos();
 			const auto boatPos = visitablePos();
-			if (cb->gameState().getMap().getTile(boatPos).isWater())
+			if (cb->getTile(boatPos)->isWater())
 			{
 			{
 				smp.val = movementPointsLimit(false);
 				smp.val = movementPointsLimit(false);
 				if (!inBoat())
 				if (!inBoat())

+ 4 - 4
lib/mapObjects/CGObjectInstance.cpp

@@ -123,19 +123,19 @@ void CGObjectInstance::setType(MapObjectID newID, MapObjectSubID newSubID)
 {
 {
 	auto position = visitablePos();
 	auto position = visitablePos();
 	auto oldOffset = appearance->getCornerOffset();
 	auto oldOffset = appearance->getCornerOffset();
-	auto &tile = cb->gameState().getMap().getTile(position);
+	const auto * tile = cb->getTile(position);
 
 
 	//recalculate blockvis tiles - new appearance might have different blockmap than before
 	//recalculate blockvis tiles - new appearance might have different blockmap than before
 	cb->gameState().getMap().hideObject(this);
 	cb->gameState().getMap().hideObject(this);
 	auto handler = LIBRARY->objtypeh->getHandlerFor(newID, newSubID);
 	auto handler = LIBRARY->objtypeh->getHandlerFor(newID, newSubID);
 
 
-	if(!handler->getTemplates(tile.getTerrainID()).empty())
+	if(!handler->getTemplates(tile->getTerrainID()).empty())
 	{
 	{
-		appearance = handler->getTemplates(tile.getTerrainID())[0];
+		appearance = handler->getTemplates(tile->getTerrainID())[0];
 	}
 	}
 	else
 	else
 	{
 	{
-		logGlobal->warn("Object %d:%d at %s has no templates suitable for terrain %s", newID, newSubID, visitablePos().toString(), tile.getTerrain()->getNameTranslated());
+		logGlobal->warn("Object %d:%d at %s has no templates suitable for terrain %s", newID, newSubID, visitablePos().toString(), tile->getTerrain()->getNameTranslated());
 		appearance = handler->getTemplates()[0]; // get at least some appearance since alternative is crash
 		appearance = handler->getTemplates()[0]; // get at least some appearance since alternative is crash
 	}
 	}
 
 

+ 3 - 3
lib/mapObjects/CGTownInstance.cpp

@@ -306,7 +306,7 @@ void CGTownInstance::setOwner(IGameEventCallback & gameEvents, const PlayerColor
 
 
 void CGTownInstance::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstance * h) const
 void CGTownInstance::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstance * h) const
 {
 {
-	if(cb->gameState().getPlayerRelations( getOwner(), h->getOwner() ) == PlayerRelations::ENEMIES)
+	if(cb->getPlayerRelations( getOwner(), h->getOwner() ) == PlayerRelations::ENEMIES)
 	{
 	{
 		if(armedGarrison() || getVisitingHero())
 		if(armedGarrison() || getVisitingHero())
 		{
 		{
@@ -625,7 +625,7 @@ void CGTownInstance::removeCapitols(IGameEventCallback & gameEvents, const Playe
 {
 {
 	if (hasCapitol()) // search if there's an older capitol
 	if (hasCapitol()) // search if there's an older capitol
 	{
 	{
-		PlayerState* state = cb->gameState().getPlayerState(owner); //get all towns owned by player
+		const PlayerState* state = cb->getPlayerState(owner); //get all towns owned by player
 		for (const auto & otherTown : state->getTowns())
 		for (const auto & otherTown : state->getTowns())
 		{
 		{
 			if (otherTown != this && otherTown->hasCapitol())
 			if (otherTown != this && otherTown->hasCapitol())
@@ -695,7 +695,7 @@ ObjectInstanceID CGTownInstance::getObjInstanceID() const
 
 
 void CGTownInstance::updateAppearance()
 void CGTownInstance::updateAppearance()
 {
 {
-	auto terrain = cb->gameState().getTile(visitablePos())->getTerrainID();
+	auto terrain = cb->getTile(visitablePos())->getTerrainID();
 	//FIXME: not the best way to do this
 	//FIXME: not the best way to do this
 	auto app = getObjectHandler()->getOverride(terrain, this);
 	auto app = getObjectHandler()->getOverride(terrain, this);
 	if (app)
 	if (app)

+ 4 - 4
lib/mapObjects/MiscObjects.cpp

@@ -76,7 +76,7 @@ bool CTeamVisited::wasVisited(const TeamID & team) const
 //CGMine
 //CGMine
 void CGMine::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstance * h) const
 void CGMine::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstance * h) const
 {
 {
-	auto relations = cb->gameState().getPlayerRelations(h->tempOwner, tempOwner);
+	auto relations = cb->getPlayerRelations(h->tempOwner, tempOwner);
 
 
 	if(relations == PlayerRelations::SAME_PLAYER) //we're visiting our mine
 	if(relations == PlayerRelations::SAME_PLAYER) //we're visiting our mine
 	{
 	{
@@ -878,7 +878,7 @@ std::vector<CreatureID> CGGarrison::providedCreatures() const
 
 
 void CGGarrison::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstance * h) const
 void CGGarrison::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstance * h) const
 {
 {
-	auto relations = cb->gameState().getPlayerRelations(h->tempOwner, tempOwner);
+	auto relations = cb->getPlayerRelations(h->tempOwner, tempOwner);
 	if (relations == PlayerRelations::ENEMIES && stacksCount() > 0) {
 	if (relations == PlayerRelations::ENEMIES && stacksCount() > 0) {
 		//TODO: Find a way to apply magic garrison effects in battle.
 		//TODO: Find a way to apply magic garrison effects in battle.
 		gameEvents.startBattle(h, this);
 		gameEvents.startBattle(h, this);
@@ -1097,7 +1097,7 @@ const IObjectInterface * CGShipyard::getObject() const
 
 
 void CGShipyard::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstance * h) const
 void CGShipyard::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstance * h) const
 {
 {
-	if(cb->gameState().getPlayerRelations(tempOwner, h->tempOwner) == PlayerRelations::ENEMIES)
+	if(cb->getPlayerRelations(tempOwner, h->tempOwner) == PlayerRelations::ENEMIES)
 		gameEvents.setOwner(this, h->tempOwner);
 		gameEvents.setOwner(this, h->tempOwner);
 
 
 	if(shipyardStatus() != IBoatGenerator::GOOD)
 	if(shipyardStatus() != IBoatGenerator::GOOD)
@@ -1149,7 +1149,7 @@ void CGObelisk::onHeroVisit(IGameEventCallback & gameEvents, const CGHeroInstanc
 	InfoWindow iw;
 	InfoWindow iw;
 	iw.type = EInfoWindowMode::AUTO;
 	iw.type = EInfoWindowMode::AUTO;
 	iw.player = h->tempOwner;
 	iw.player = h->tempOwner;
-	TeamState *ts = cb->gameState().getPlayerTeam(h->tempOwner);
+	const TeamState *ts = cb->getPlayerTeam(h->tempOwner);
 	assert(ts);
 	assert(ts);
 	TeamID team = ts->id;
 	TeamID team = ts->id;