#include "mods.h"
#include "utility_string.h"
#include "subgame.h"
+#include "quicktune.h"
/*
Settings.
// The password entered during the menu screen,
std::string password;
+ bool first_loop = true;
+
/*
Menu-game loop
*/
*/
while(kill == false)
{
+ // If skip_main_menu, only go through here once
+ if(skip_main_menu && !first_loop){
+ kill = true;
+ break;
+ }
+ first_loop = false;
+
// Cursor can be non-visible when coming from the game
device->getCursorControl()->setVisible(true);
// Some stuff are left to scene manager when coming from the game
// (map at least?)
smgr->clear();
- // Reset or hide the debug gui texts
- /*guitext->setText(L"Minetest-c55");
- guitext2->setVisible(false);
- guitext_info->setVisible(false);
- guitext_chat->setVisible(false);*/
// Initialize menu data
MainMenuData menudata;
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);
+ std::string gameid = getWorldGameId(commanded_world, true);
+ if(gameid == "")
+ gameid = g_settings->get("default_game");
WorldSpec spec(commanded_world, "[commanded world]", gameid);
worldspecs.push_back(spec);
menudata.worlds.push_back(narrow_to_wide(spec.name)
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());
// Update configuration file
if(configpath != "")
g_settings->updateConfigFile(configpath.c_str());
+
+ // Print modified quicktune values
+ {
+ bool header_printed = false;
+ std::vector<std::string> names = getQuicktuneNames();
+ for(u32 i=0; i<names.size(); i++){
+ QuicktuneValue val = getQuicktuneValue(names[i]);
+ if(!val.modified)
+ continue;
+ if(!header_printed){
+ dstream<<"Modified quicktune values:"<<std::endl;
+ header_printed = true;
+ }
+ dstream<<names[i]<<" = "<<val.getString()<<std::endl;
+ }
+ }
END_DEBUG_EXCEPTION_HANDLER(errorstream)