Fix delayed error message in start game tab
authorrubenwardy <rw@rubenwardy.com>
Sat, 11 Apr 2020 23:05:55 +0000 (00:05 +0100)
committerrubenwardy <rw@rubenwardy.com>
Sat, 11 Apr 2020 23:12:18 +0000 (00:12 +0100)
builtin/mainmenu/tab_local.lua

index 0969bccfbdd23588de24c740d47472a03f84fd0c..cd6cbea46aee4946ffaacd11a15e17f72890eafc 100644 (file)
@@ -207,40 +207,35 @@ local function main_button_handler(this, fields, name, tabdata)
                local selected = core.get_textlist_index("sp_worlds")
                gamedata.selected_world = menudata.worldlist:get_raw_index(selected)
 
-               if core.settings:get_bool("enable_server") then
-                       if selected ~= nil and gamedata.selected_world ~= 0 then
-                               gamedata.playername = fields["te_playername"]
-                               gamedata.password   = fields["te_passwd"]
-                               gamedata.port       = fields["te_serverport"]
-                               gamedata.address    = ""
-
-                               core.settings:set("port",gamedata.port)
-                               if fields["te_serveraddr"] ~= nil then
-                                       core.settings:set("bind_address",fields["te_serveraddr"])
-                               end
+               if selected == nil or gamedata.selected_world == 0 then
+                       gamedata.errormessage =
+                                       fgettext("No world created or selected!")
+                       return true
+               end
 
-                               --update last game
-                               local world = menudata.worldlist:get_raw_element(gamedata.selected_world)
-                               if world then
-                                       local game = pkgmgr.find_by_gameid(world.gameid)
-                                       core.settings:set("menu_last_game", game.id)
-                               end
+               -- Update last game
+               local world = menudata.worldlist:get_raw_element(gamedata.selected_world)
+               if world then
+                       local game = pkgmgr.find_by_gameid(world.gameid)
+                       core.settings:set("menu_last_game", game.id)
+               end
 
-                               core.start()
-                       else
-                               gamedata.errormessage =
-                                       fgettext("No world created or selected!")
+               if core.settings:get_bool("enable_server") then
+                       gamedata.playername = fields["te_playername"]
+                       gamedata.password   = fields["te_passwd"]
+                       gamedata.port       = fields["te_serverport"]
+                       gamedata.address    = ""
+
+                       core.settings:set("port",gamedata.port)
+                       if fields["te_serveraddr"] ~= nil then
+                               core.settings:set("bind_address",fields["te_serveraddr"])
                        end
                else
-                       if selected ~= nil and gamedata.selected_world ~= 0 then
-                               gamedata.singleplayer = true
-                               core.start()
-                       else
-                               gamedata.errormessage =
-                                       fgettext("No world created or selected!")
-                       end
-                       return true
+                       gamedata.singleplayer = true
                end
+
+               core.start()
+               return true
        end
 
        if fields["world_create"] ~= nil then