Michael 2 years ago
parent
commit
481cd89dc8
2 changed files with 25 additions and 1 deletions
  1. 24 1
      client/lobby/OptionsTab.cpp
  2. 1 0
      client/lobby/OptionsTab.h

+ 24 - 1
client/lobby/OptionsTab.cpp

@@ -448,14 +448,37 @@ void OptionsTab::SelectionWindow::apply()
 	{
 		close();
 
-		CSH->setPlayerOption(LobbyChangePlayerOption::TOWN, 1, color);
+		setSelection();
 	}
 }
 
+void OptionsTab::SelectionWindow::setSelection()
+{
+	int selectedFractionPos = -1;
+	for(int i = 0; i<factions.size(); i++)
+		if(factions[i] == selectedFraction)
+			selectedFractionPos = i;
+
+	int initialFractionPos = -1;
+	for(int i = 0; i<factions.size(); i++)
+		if(factions[i] == initialFraction)
+			initialFractionPos = i;
+
+	int deltatown = selectedFractionPos - initialFractionPos;
+
+	if(deltatown != 0)
+		for(int i = 0; i<abs(deltatown); i++)
+			CSH->setPlayerOption(LobbyChangePlayerOption::TOWN, deltatown > 0 ? 1 : -1, color);
+}
+
 void OptionsTab::SelectionWindow::redraw()
 {
+	OBJ_CONSTRUCTION_CAPTURING_ALL_NO_DISPOSE;
+	
 	components.clear();
 
+	GH.windows().totalRedraw();
+
 	genContentTitle();
 	genContentCastles();
 	genContentHeroes();

+ 1 - 0
client/lobby/OptionsTab.h

@@ -123,6 +123,7 @@ public:
 
 		void apply();
 		void redraw();
+		void setSelection();
 		FactionID getElementCastle(const Point & cursorPosition);
 		HeroTypeID getElementHero(const Point & cursorPosition);
 		int getElementBonus(const Point & cursorPosition);