Browse Source

limit entries

Laserlicht 3 months ago
parent
commit
5fcb64911d

+ 5 - 0
client/mainmenu/CHighScoreScreen.cpp

@@ -276,12 +276,17 @@ int CHighScoreInputScreen::addEntry(std::string text) {
 	JsonSerializer ser(nullptr, newNode);
 	ser.serializeStruct("statistic", stat);
 
+	if (baseNode.size() > HIGHSCORE_ROW_SAVE - 1)
+        baseNode.resize(HIGHSCORE_ROW_SAVE - 1);
 	baseNode.push_back(newNode);
 	boost::range::sort(baseNode, sortFunctor);
 
 	int pos = -1;
 	for (int i = 0; i < baseNode.size(); i++)
 	{
+		if(i >= Statistic::STAT_ROW_SAVE && baseNode[i]["posFlag"].isNull())
+			baseNode[i]["statistic"].clear();
+
 		if(!baseNode[i]["posFlag"].isNull())
 		{
 			baseNode[i]["posFlag"].clear();

+ 2 - 0
client/mainmenu/CHighScoreScreen.h

@@ -76,6 +76,8 @@ public:
 
 class CHighScoreInputScreen : public CWindowObject, public IVideoHolder
 {
+	const int HIGHSCORE_ROW_SAVE = 100;
+
 	std::vector<std::shared_ptr<CLabel>> texts;
 	std::shared_ptr<CHighScoreInput> input;
 	std::shared_ptr<TransparentFilledRectangle> background;

+ 2 - 0
lib/gameState/GameStatistics.h

@@ -155,6 +155,8 @@ public:
 class DLL_LINKAGE Statistic
 {
 public:
+	static const int STAT_ROW_SAVE = 15;
+
 	static int getNumberOfArts(const PlayerState * ps);
 	static int getNumberOfDwellings(const PlayerState * ps);
 	static si64 getArmyStrength(const PlayerState * ps, bool withTownGarrison = false);