瀏覽代碼

Allow changing queue size instantly on option toggle

Ivan Savenko 2 年之前
父節點
當前提交
7030fa8fe7
共有 3 個文件被更改,包括 19 次插入20 次删除
  1. 1 2
      client/battle/BattleInterface.cpp
  2. 17 17
      client/battle/BattleWindow.cpp
  3. 1 1
      client/battle/BattleWindow.h

+ 1 - 2
client/battle/BattleInterface.cpp

@@ -745,8 +745,7 @@ void BattleInterface::executeOnAnimationCondition( EAnimationEvents event, bool
 
 void BattleInterface::setBattleQueueVisibility(bool visible)
 {
+	windowObject->hideQueue();
 	if(visible)
 		windowObject->showQueue();
-	else
-		windowObject->hideQueue();
 }

+ 17 - 17
client/battle/BattleWindow.cpp

@@ -72,6 +72,20 @@ BattleWindow::BattleWindow(BattleInterface & owner):
 	owner.fieldController.reset( new BattleFieldController(owner));
 	owner.fieldController->createHeroes();
 
+	createQueue();
+
+	if ( owner.tacticsMode )
+		tacticPhaseStarted();
+	else
+		tacticPhaseEnded();
+
+	addUsedEvents(RCLICK | KEYBOARD);
+}
+
+void BattleWindow::createQueue()
+{
+	OBJ_CONSTRUCTION_CAPTURING_ALL_NO_DISPOSE;
+
 	//create stack queue and adjust our own position
 	bool embedQueue;
 	std::string queueSize = settings["battle"]["queueSize"].String();
@@ -89,13 +103,6 @@ BattleWindow::BattleWindow(BattleInterface & owner):
 		pos.h += queue->pos.h;
 		pos = center();
 	}
-
-	if ( owner.tacticsMode )
-		tacticPhaseStarted();
-	else
-		tacticPhaseEnded();
-
-	addUsedEvents(RCLICK | KEYBOARD);
 }
 
 BattleWindow::~BattleWindow()
@@ -147,16 +154,9 @@ void BattleWindow::showQueue()
 	Settings showQueue = settings.write["battle"]["showQueue"];
 	showQueue->Bool() = true;
 
-	queue->enable();
-
-	if (!queue->embedded)
-	{
-		//re-center, taking into account stack queue position
-		pos.y -= queue->pos.h;
-		pos.h += queue->pos.h;
-		pos = center();
-		GH.totalRedraw();
-	}
+	createQueue();
+	updateQueue();
+	GH.totalRedraw();
 }
 
 void BattleWindow::updateQueue()

+ 1 - 1
client/battle/BattleWindow.h

@@ -57,7 +57,7 @@ class BattleWindow : public InterfaceObjectConfigurable
 
 	/// flip battle queue visibility to opposite
 	void toggleQueueVisibility();
-
+	void createQueue();
 
 	std::shared_ptr<BattleConsole> buildBattleConsole(const JsonNode &) const;