aboutsummaryrefslogtreecommitdiff
path: root/client/gui/menus/main/server_list_item.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/gui/menus/main/server_list_item.gd')
-rw-r--r--client/gui/menus/main/server_list_item.gd38
1 files changed, 38 insertions, 0 deletions
diff --git a/client/gui/menus/main/server_list_item.gd b/client/gui/menus/main/server_list_item.gd
new file mode 100644
index 00000000..0cffdd72
--- /dev/null
+++ b/client/gui/menus/main/server_list_item.gd
@@ -0,0 +1,38 @@
+# Hurry Curry! - a game about cooking
+# Copyright (C) 2025 Hurry Curry! contributors
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+class_name ServerListItem
+extends PanelContainer
+
+var error_style_focus: StyleBoxFlat = preload("res://gui/resources/style/error_focus_style.tres")
+@onready var title: Label = $MarginContainer/VBoxContainer/Title
+@onready var info: Label = $MarginContainer/VBoxContainer/Info
+@onready var button: Button = $Button
+
+func setup(name_: String, online_players: int, version: Array):
+ title.text = name_
+ if version[0] != Multiplayer.VERSION_MAJOR or version[1] > Multiplayer.VERSION_MINOR:
+ button.disabled = true
+ button.add_theme_stylebox_override("focus", error_style_focus)
+ info.text = tr("c.menu.play.server_version_mismatch")
+ info.add_theme_color_override("font_color", Color("ff2222"))
+ return
+ info.text = tr("c.menu.play.server_players").format([online_players])
+
+ # This node is in group not no_click_sound, so sounds won't be automatically connected
+ # by menu system. Reason: These nodes are deleted and re-created every few seconds
+ # in server list, and signals are only connected on ready.
+ button.pressed.connect(Sound.play_click)
+ button.mouse_entered.connect(Sound.play_hover)