aboutsummaryrefslogtreecommitdiff
path: root/client/menu/play.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/menu/play.gd')
-rw-r--r--client/menu/play.gd18
1 files changed, 8 insertions, 10 deletions
diff --git a/client/menu/play.gd b/client/menu/play.gd
index 05105ced..25645522 100644
--- a/client/menu/play.gd
+++ b/client/menu/play.gd
@@ -15,6 +15,7 @@
#
extends Menu
+var server_list_item: PackedScene = preload("res://menu/ui_elements/server_list_item.tscn")
var url_regex: RegEx = RegEx.new()
@onready var server_list: VBoxContainer = $side/margin/options/second/ScrollContainerCustom/ServerList
@@ -63,7 +64,7 @@ func update_server_list(lists: Array[Array]):
# Find out the index of the currently focused server in the list
var prev_selected_idx := -1
for i in range(server_list.get_children().size()):
- if server_list.get_child(i).has_focus():
+ if server_list.get_child(i).button.has_focus():
prev_selected_idx = i
break
@@ -73,17 +74,14 @@ func update_server_list(lists: Array[Array]):
var idx := 0
for l in lists:
for i in l:
- var b := Button.new()
- b.text_overrun_behavior = TextServer.OVERRUN_TRIM_WORD_ELLIPSIS
- b.text = tr("c.menu.play.list_item").format([i.name, roundi(i.players_online)])
+ var server_item: ServerListItem = server_list_item.instantiate()
+ server_list.add_child(server_item)
# TODO: Implement fallback address correctly
- if i.version[0] != Multiplayer.VERSION_MAJOR or i.version[1] > Multiplayer.VERSION_MINOR:
- b.disabled = true
- b.pressed.connect(connect_to.bind(i.address[0]))
- server_list.add_child(b)
+ server_item.setup(i.name, roundi(i.players_online), i.version)
+ server_item.button.pressed.connect(connect_to.bind(i.address[0]))
# Focus the same server with the same index as the previously focused one
if idx == prev_selected_idx:
- b.grab_focus()
+ server_item.button.grab_focus()
idx += 1
if prev_selected_idx > idx:
@@ -91,7 +89,7 @@ func update_server_list(lists: Array[Array]):
if idx - 1 < 0:
connect_uri.grab_focus()
else:
- server_list.get_child(idx - 1).grab_focus()
+ server_list.get_child(idx - 1).button.grab_focus()
# Show message if no servers available
server_list_empty.visible = idx == 0