aboutsummaryrefslogtreecommitdiff
path: root/client/gui/menus/ingame.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/gui/menus/ingame.gd')
-rw-r--r--client/gui/menus/ingame.gd82
1 files changed, 82 insertions, 0 deletions
diff --git a/client/gui/menus/ingame.gd b/client/gui/menus/ingame.gd
new file mode 100644
index 00000000..4809b2ee
--- /dev/null
+++ b/client/gui/menus/ingame.gd
@@ -0,0 +1,82 @@
+# 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/>.
+#
+extends Menu
+
+@onready var anim = $AnimationPlayer
+@onready var options = $Side/Margin/Options
+@onready var game: Game = $"../Game"
+@onready var lobby_button: Button = $Side/Margin/Options/Lobby
+@onready var leave_button: Button = $Side/Margin/Options/Leave
+
+var opened
+func _ready():
+ opened = Time.get_ticks_msec()
+ game.join_state_updated.connect(_on_game_join_state_changed)
+ _on_game_join_state_changed(game.join_state)
+ update_lobby_button()
+ super()
+
+func update_lobby_button():
+ lobby_button.disabled = game.in_lobby or game.join_state == Game.JoinState.SPECTATING
+ if game.in_lobby:
+ lobby_button.tooltip_text = "Cannot cancel game since no game is running."
+ elif not game.join_state == Game.JoinState.JOINED:
+ lobby_button.tooltip_text = "You must join in order to be able to cancel the current game."
+ else:
+ lobby_button.tooltip_text = ""
+
+func anim_setup(): pass
+func _menu_open():
+ anim.play("activate")
+ await anim.animation_finished
+ game.mp.send_idle(true)
+func _menu_exit():
+ game.mp.send_idle(false)
+ anim.play_backwards("activate")
+ await anim.animation_finished
+
+func _on_resume_pressed():
+ exit()
+
+func _on_main_menu_pressed():
+ parent_menu.replace_menu("res://gui/menus/main/main.tscn")
+
+func _on_settings_pressed():
+ submenu("res://gui/menus/settings/settings.tscn")
+
+func _on_reconnect_pressed():
+ parent_menu.replace_menu("res://gui/menus/game.tscn", parent_menu.data)
+
+func _on_quit_pressed():
+ quit()
+
+func _on_lobby_pressed():
+ game.mp.send_chat(game.my_player_id, "/end")
+ exit()
+
+func _on_leave_pressed():
+ game.toggle_join()
+
+func _on_game_join_state_changed(state: Game.JoinState):
+ match state:
+ Game.JoinState.JOINED:
+ leave_button.disabled = false
+ leave_button.text = tr("c.menu.ingame.leave")
+ Game.JoinState.SPECTATING:
+ leave_button.disabled = false
+ leave_button.text = tr("c.menu.ingame.join")
+ Game.JoinState.WAITING:
+ leave_button.disabled = true