Bläddra i källkod

vcmi: allow showing no more than 8 components

In InfoWindow there is no place for more than 8 components.
Better to have more annoying windows than window which cannot be closed

Slider may be better of course, but I cannot do it for now.
Konstantin 2 år sedan
förälder
incheckning
b4940ee247
1 ändrade filer med 11 tillägg och 5 borttagningar
  1. 11 5
      client/CPlayerInterface.cpp

+ 11 - 5
client/CPlayerInterface.cpp

@@ -1053,11 +1053,17 @@ void CPlayerInterface::showInfoDialog(EInfoWindowMode type, const std::string &t
 	{
 		return;
 	}
-	std::vector<std::shared_ptr<CComponent>> intComps;
-	for (auto & component : components)
-		intComps.push_back(std::make_shared<CComponent>(component));
-	showInfoDialog(text,intComps,soundID);
-
+	std::vector<Component> vect = components; //I do not know currently how to avoid copy here
+	do
+	{
+		std::vector<Component> sender = {vect.begin(), vect.begin() + std::min(vect.size(), static_cast<size_t>(8))};
+		std::vector<std::shared_ptr<CComponent>> intComps;
+		for (auto & component : sender)
+			intComps.push_back(std::make_shared<CComponent>(component));
+		showInfoDialog(text,intComps,soundID);
+		vect.erase(vect.begin(), vect.begin() + std::min(vect.size(), static_cast<size_t>(8)));
+	}
+	while(!vect.empty());
 }
 
 void CPlayerInterface::showInfoDialog(const std::string & text, std::shared_ptr<CComponent> component)