summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2012-03-12 22:15:56 +0200
committerPerttu Ahola <celeron55@gmail.com>2012-03-12 22:15:56 +0200
commit82073025ccc551c2fd205cc1dc6fcecac61cc7ea (patch)
tree03108d4dff78fc67ef432028c8ca4fea759f19b5
parent2c9bb06516418b99c1eac957cfae9d84c9bef954 (diff)
downloadminetest-82073025ccc551c2fd205cc1dc6fcecac61cc7ea.tar.gz
minetest-82073025ccc551c2fd205cc1dc6fcecac61cc7ea.tar.bz2
minetest-82073025ccc551c2fd205cc1dc6fcecac61cc7ea.zip
Remember selected world by path
-rw-r--r--src/main.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 7caec19c1..41cf583f5 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1277,11 +1277,22 @@ int main(int argc, char *argv[])
i != worldspecs.end(); i++)
menudata.worlds.push_back(narrow_to_wide(
i->name + " [" + i->gameid + "]"));
- // Select if there is only one
- if(worldspecs.size() == 1)
+ // Default to selecting nothing
+ menudata.selected_world = -1;
+ // If there is only one world, select it
+ if(worldspecs.size() == 1){
menudata.selected_world = 0;
- else
- menudata.selected_world = -1;
+ }
+ // Otherwise try to select according to selected_world_path
+ else if(g_settings->exists("selected_world_path")){
+ std::string trypath = g_settings->get("selected_world_path");
+ for(u32 i=0; i<worldspecs.size(); i++){
+ if(worldspecs[i].path == trypath){
+ menudata.selected_world = i;
+ break;
+ }
+ }
+ }
// If a world was commanded, append and select it
if(commanded_world != ""){
std::string gameid = getWorldGameId(commanded_world, true);
@@ -1390,6 +1401,9 @@ int main(int argc, char *argv[])
g_settings->set("name", playername);
g_settings->set("address", address);
g_settings->set("port", itos(port));
+ if(menudata.selected_world != -1)
+ g_settings->set("selected_world_path",
+ worldspecs[menudata.selected_world].path);
// Update configuration file
if(configpath != "")
g_settings->updateConfigFile(configpath.c_str());