浏览代码

Use new adventure map state to detect opponent human turn

Dydzio 2 年之前
父节点
当前提交
0b5cea0320

+ 1 - 1
client/adventureMap/AdventureMapInterface.cpp

@@ -323,7 +323,7 @@ void AdventureMapInterface::onEnemyTurnStarted(PlayerColor playerID, bool isHuma
 	mapAudio->onEnemyTurnStarted();
 	widget->getMinimap()->setAIRadar(!isHuman);
 	widget->getInfoBar()->startEnemyTurn(LOCPLINT->cb->getCurrentPlayer());
-	setState(EAdventureState::ENEMY_TURN);
+	setState(isHuman ? EAdventureState::OTHER_HUMAN_PLAYER_TURN : EAdventureState::AI_PLAYER_TURN);
 }
 
 void AdventureMapInterface::setState(EAdventureState state)

+ 2 - 10
client/adventureMap/AdventureMapShortcuts.cpp

@@ -36,14 +36,6 @@
 #include "../../lib/mapping/CMap.h"
 #include "../../lib/pathfinder/CGPathNode.h"
 
-bool isCurrentPlayerHuman()
-{
-	PlayerColor currentPlayer = LOCPLINT->cb->getCurrentPlayer();
-	bool isHuman = LOCPLINT->cb->getStartInfo()->playerInfos.count(currentPlayer)
-				   && LOCPLINT->cb->getStartInfo()->playerInfos.at(currentPlayer).isControlledByHuman();
-	return isHuman;
-}
-
 AdventureMapShortcuts::AdventureMapShortcuts(AdventureMapInterface & owner)
 	: owner(owner)
 	, state(EAdventureState::NOT_INITIALIZED)
@@ -471,11 +463,11 @@ bool AdventureMapShortcuts::optionSidePanelActive()
 
 bool AdventureMapShortcuts::optionMapScrollingActive()
 {
-	return state == EAdventureState::MAKING_TURN || state == EAdventureState::WORLD_VIEW || (state == EAdventureState::ENEMY_TURN && isCurrentPlayerHuman());
+	return state == EAdventureState::MAKING_TURN || state == EAdventureState::WORLD_VIEW || (state == EAdventureState::OTHER_HUMAN_PLAYER_TURN);
 }
 
 bool AdventureMapShortcuts::optionMapViewActive()
 {
 	return state == EAdventureState::MAKING_TURN || state == EAdventureState::WORLD_VIEW || state == EAdventureState::CASTING_SPELL
-		|| (state == EAdventureState::ENEMY_TURN && isCurrentPlayerHuman());
+		|| (state == EAdventureState::OTHER_HUMAN_PLAYER_TURN);
 }

+ 2 - 1
client/adventureMap/AdventureState.h

@@ -14,7 +14,8 @@ enum class EAdventureState
 	NOT_INITIALIZED,
 	HOTSEAT_WAIT,
 	MAKING_TURN,
-	ENEMY_TURN,
+	AI_PLAYER_TURN,
+	OTHER_HUMAN_PLAYER_TURN,
 	CASTING_SPELL,
 	WORLD_VIEW
 };