Преглед на файлове

preselect last save in loading screen

Laserlicht преди 1 година
родител
ревизия
359503f878
променени са 2 файла, в които са добавени 19 реда и са изтрити 3 реда
  1. 18 3
      client/lobby/SelectionTab.cpp
  2. 1 0
      client/lobby/SelectionTab.h

+ 18 - 3
client/lobby/SelectionTab.cpp

@@ -677,6 +677,9 @@ void SelectionTab::selectFileName(std::string fname)
 		}
 	}
 
+	filter(-1);
+	selectAbs(-1);
+
 	for(int i = (int)curItems.size() - 1; i >= 0; i--)
 	{
 		if(curItems[i]->fileURI == fname)
@@ -687,13 +690,23 @@ void SelectionTab::selectFileName(std::string fname)
 		}
 	}
 
-	filter(-1);
-	selectAbs(-1);
-
 	if(tabType == ESelectionScreen::saveGame && inputName->getText().empty())
 		inputName->setText("NEWGAME");
 }
 
+void SelectionTab::selectNewestFile()
+{
+	time_t newestTime = 0;
+	std::string newestFile = "";
+	for(int i = (int)allItems.size() - 1; i >= 0; i--)
+		if(allItems[i]->lastWrite > newestTime)
+		{
+			newestTime = allItems[i]->lastWrite;
+			newestFile = allItems[i]->fileURI;
+		}
+	selectFileName(newestFile);
+}
+
 std::shared_ptr<ElementInfo> SelectionTab::getSelectedMapInfo() const
 {
 	return curItems.empty() || curItems[selectionPos]->isFolder ? nullptr : curItems[selectionPos];
@@ -733,6 +746,8 @@ void SelectionTab::restoreLastSelection()
 		selectFileName(settings["general"]["lastCampaign"].String());
 		break;
 	case ESelectionScreen::loadGame:
+		selectNewestFile();
+		break;
 	case ESelectionScreen::saveGame:
 		selectFileName(settings["general"]["lastSave"].String());
 	}

+ 1 - 0
client/lobby/SelectionTab.h

@@ -101,6 +101,7 @@ public:
 	int getLine() const;
 	int getLine(const Point & position) const;
 	void selectFileName(std::string fname);
+	void selectNewestFile();
 	std::shared_ptr<ElementInfo> getSelectedMapInfo() const;
 	void rememberCurrentSelection();
 	void restoreLastSelection();