aboutsummaryrefslogtreecommitdiff
path: root/builtin/mainmenu
diff options
context:
space:
mode:
Diffstat (limited to 'builtin/mainmenu')
-rw-r--r--builtin/mainmenu/common.lua10
-rw-r--r--builtin/mainmenu/tab_multiplayer.lua30
-rw-r--r--builtin/mainmenu/tab_simple_main.lua12
3 files changed, 32 insertions, 20 deletions
diff --git a/builtin/mainmenu/common.lua b/builtin/mainmenu/common.lua
index 3dd7d8b4a..62ab2b578 100644
--- a/builtin/mainmenu/common.lua
+++ b/builtin/mainmenu/common.lua
@@ -246,6 +246,7 @@ function asyncOnlineFavourites()
}}
end
menudata.favorites = menudata.public_known
+ menudata.favorites_is_public = true
core.handle_async(
function(param)
return core.get_favorites("online")
@@ -257,6 +258,7 @@ function asyncOnlineFavourites()
if favs[1] then
menudata.public_known = favs
menudata.favorites = menudata.public_known
+ menudata.favorites_is_public = true
end
core.event_handler("Refresh")
end
@@ -297,12 +299,14 @@ function is_server_protocol_compat_or_error(server_proto_min, server_proto_max)
if not is_server_protocol_compat(server_proto_min, server_proto_max) then
local server_prot_ver_info
local client_prot_ver_info
- if server_proto_min ~= server_proto_max then
+ local s_p_min = server_proto_min or 13
+ local s_p_max = server_proto_max or 24
+ if s_p_min ~= s_p_max then
server_prot_ver_info = fgettext_ne("Server supports protocol versions between $1 and $2. ",
- server_proto_min or 13, server_proto_max or 24)
+ s_p_min, s_p_max)
else
server_prot_ver_info = fgettext_ne("Server enforces protocol version $1. ",
- server_proto_min or 13)
+ s_p_min)
end
if min_supp_proto ~= max_supp_proto then
client_prot_ver_info= fgettext_ne("We support protocol versions between version $1 and $2.",
diff --git a/builtin/mainmenu/tab_multiplayer.lua b/builtin/mainmenu/tab_multiplayer.lua
index 06d8791f0..f3ba122fc 100644
--- a/builtin/mainmenu/tab_multiplayer.lua
+++ b/builtin/mainmenu/tab_multiplayer.lua
@@ -102,22 +102,22 @@ local function main_button_handler(tabview, fields, name, tabdata)
local event = core.explode_table_event(fields["favourites"])
if event.type == "DCL" then
if event.row <= #menudata.favorites then
- if not is_server_protocol_compat_or_error(menudata.favorites[event.row].proto_min,
- menudata.favorites[event.row].proto_max) then
+ local fav = menudata.favorites[event.row]
+ if menudata.favorites_is_public and
+ not is_server_protocol_compat_or_error(
+ fav.proto_min, fav.proto_max) then
return true
end
- gamedata.address = menudata.favorites[event.row].address
- gamedata.port = menudata.favorites[event.row].port
+ gamedata.address = fav.address
+ gamedata.port = fav.port
gamedata.playername = fields["te_name"]
if fields["te_pwd"] ~= nil then
gamedata.password = fields["te_pwd"]
end
gamedata.selected_world = 0
- if menudata.favorites ~= nil then
- gamedata.servername = menudata.favorites[event.row].name
- gamedata.serverdescription = menudata.favorites[event.row].description
- end
+ gamedata.servername = fav.name
+ gamedata.serverdescription = fav.description
if gamedata.address ~= nil and
gamedata.port ~= nil then
@@ -188,6 +188,7 @@ local function main_button_handler(tabview, fields, name, tabdata)
asyncOnlineFavourites()
else
menudata.favorites = core.get_favorites("local")
+ menudata.favorites_is_public = false
end
tabdata.fav_selected = nil
return true
@@ -197,7 +198,7 @@ local function main_button_handler(tabview, fields, name, tabdata)
local current_favourite = core.get_table_index("favourites")
if current_favourite == nil then return end
core.delete_favorite(current_favourite)
- menudata.favorites = order_favorite_list(core.get_favorites())
+ menudata.favorites = core.get_favorites("local")
tabdata.fav_selected = nil
core.setting_set("address","")
@@ -221,11 +222,13 @@ local function main_button_handler(tabview, fields, name, tabdata)
menudata.favorites[fav_idx].address == fields["te_address"] and
menudata.favorites[fav_idx].port == fields["te_port"] then
- gamedata.servername = menudata.favorites[fav_idx].name
- gamedata.serverdescription = menudata.favorites[fav_idx].description
+ local fav = menudata.favorites[fav_idx]
+ gamedata.servername = fav.name
+ gamedata.serverdescription = fav.description
- if not is_server_protocol_compat_or_error(menudata.favorites[fav_idx].proto_min,
- menudata.favorites[fav_idx].proto_max)then
+ if menudata.favorites_is_public and
+ not is_server_protocol_compat_or_error(
+ fav.proto_min, fav.proto_max) then
return true
end
else
@@ -252,6 +255,7 @@ local function on_change(type,old_tab,new_tab)
asyncOnlineFavourites()
else
menudata.favorites = core.get_favorites("local")
+ menudata.favorites_is_public = false
end
end
diff --git a/builtin/mainmenu/tab_simple_main.lua b/builtin/mainmenu/tab_simple_main.lua
index b32418938..cb64b73f6 100644
--- a/builtin/mainmenu/tab_simple_main.lua
+++ b/builtin/mainmenu/tab_simple_main.lua
@@ -122,6 +122,7 @@ local function main_button_handler(tabview, fields, name, tabdata)
asyncOnlineFavourites()
else
menudata.favorites = core.get_favorites("local")
+ menudata.favorites_is_public = false
end
return true
end
@@ -149,12 +150,14 @@ local function main_button_handler(tabview, fields, name, tabdata)
if fav_idx ~= nil and fav_idx <= #menudata.favorites and
menudata.favorites[fav_idx].address == fields["te_address"] and
menudata.favorites[fav_idx].port == fields["te_port"] then
+ local fav = menudata.favorites[fav_idx]
- gamedata.servername = menudata.favorites[fav_idx].name
- gamedata.serverdescription = menudata.favorites[fav_idx].description
+ gamedata.servername = fav.name
+ gamedata.serverdescription = fav.description
- if not is_server_protocol_compat_or_error(menudata.favorites[fav_idx].proto_min,
- menudata.favorites[fav_idx].proto_max) then
+ if menudata.favorites_is_public and
+ not is_server_protocol_compat_or_error(
+ fav.proto_min, fav.proto_max) then
return true
end
else
@@ -192,6 +195,7 @@ local function on_activate(type,old_tab,new_tab)
asyncOnlineFavourites()
else
menudata.favorites = core.get_favorites("local")
+ menudata.favorites_is_public = false
end
end