Przeglądaj źródła

Show stacks selected to sacrifice

Piotr Wójcik 8 lat temu
rodzic
commit
886c8f63c6
2 zmienionych plików z 19 dodań i 0 usunięć
  1. 18 0
      client/windows/CTradeWindow.cpp
  2. 1 0
      client/windows/CTradeWindow.h

+ 18 - 0
client/windows/CTradeWindow.cpp

@@ -1316,10 +1316,28 @@ void CAltarWindow::selectionChanged(bool side)
 	slider->block(!slider->getAmount());
 	slider->moveTo(sacrificedUnits[hLeft->serial]);
 	max->block(!slider->getAmount());
+	selectOppositeItem(side);
 	readyToTrade = true;
 	redraw();
 }
 
+void CAltarWindow::selectOppositeItem(bool side)
+{
+	bool oppositeSide = !side;
+	int pos = vstd::find_pos(items[side], side ? hLeft : hRight);
+	int oppositePos = vstd::find_pos(items[oppositeSide], oppositeSide ? hLeft : hRight);
+
+	if(pos >= 0 && pos != oppositePos)
+	{
+		if(oppositeSide)
+			hLeft = items[oppositeSide][pos];
+		else
+			hRight = items[oppositeSide][pos];
+
+		selectionChanged(oppositeSide);
+	}
+}
+
 void CAltarWindow::mimicCres()
 {
 	std::vector<Rect> positions;

+ 1 - 0
client/windows/CTradeWindow.h

@@ -141,6 +141,7 @@ public:
 
 
 	void selectionChanged(bool side) override; //true == left
+	void selectOppositeItem(bool side);
 	void SacrificeAll();
 	void SacrificeBackpack();