aboutsummaryrefslogtreecommitdiff
path: root/client/menu
diff options
context:
space:
mode:
Diffstat (limited to 'client/menu')
-rw-r--r--client/menu/ingame.gd23
-rw-r--r--client/menu/ingame.tscn15
-rw-r--r--client/menu/lobby.gd15
3 files changed, 46 insertions, 7 deletions
diff --git a/client/menu/ingame.gd b/client/menu/ingame.gd
index 659528aa..f8653411 100644
--- a/client/menu/ingame.gd
+++ b/client/menu/ingame.gd
@@ -20,11 +20,14 @@ extends Menu
@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()
lobby_button.disabled = game.in_lobby
+ game.joined.connect(_on_game_joined)
+ game.left.connect(_on_game_left)
super()
func anim_setup(): pass
@@ -57,3 +60,23 @@ func _on_quit_pressed():
func _on_lobby_pressed():
game.mp.send_chat("/end")
exit()
+
+func _on_leave_pressed():
+ if game.is_joined:
+ game.mp.send_leave()
+ elif not game.join_sent:
+ leave_button.disabled = true
+ game.join()
+
+func _on_game_joined():
+ leave_button.disabled = false
+ update_button_text()
+
+func _on_game_left():
+ update_button_text()
+
+func update_button_text():
+ if game.is_joined:
+ leave_button.text = tr("Leave Game")
+ else:
+ leave_button.text = tr("Join Game")
diff --git a/client/menu/ingame.tscn b/client/menu/ingame.tscn
index 029a4d6a..75710d41 100644
--- a/client/menu/ingame.tscn
+++ b/client/menu/ingame.tscn
@@ -72,6 +72,7 @@ anchors_preset = 9
anchor_bottom = 1.0
offset_left = -400.0
offset_right = -90.0
+offset_bottom = 648.0
grow_vertical = 2
[node name="Margin" type="MarginContainer" parent="Side"]
@@ -102,6 +103,11 @@ layout_mode = 2
text = "Resume"
alignment = 0
+[node name="Leave" type="Button" parent="Side/Margin/Options"]
+layout_mode = 2
+text = "Join Game"
+alignment = 0
+
[node name="Lobby" type="Button" parent="Side/Margin/Options"]
layout_mode = 2
text = "Cancel game"
@@ -112,11 +118,19 @@ layout_mode = 2
text = "Reconnect"
alignment = 0
+[node name="Spacer2" type="Control" parent="Side/Margin/Options"]
+custom_minimum_size = Vector2(0, 10)
+layout_mode = 2
+
[node name="Settings" type="Button" parent="Side/Margin/Options"]
layout_mode = 2
text = "Settings"
alignment = 0
+[node name="Spacer3" type="Control" parent="Side/Margin/Options"]
+custom_minimum_size = Vector2(0, 10)
+layout_mode = 2
+
[node name="MainMenu" type="Button" parent="Side/Margin/Options"]
layout_mode = 2
text = "Main menu"
@@ -128,6 +142,7 @@ text = "Quit game"
alignment = 0
[connection signal="pressed" from="Side/Margin/Options/Resume" to="." method="_on_resume_pressed"]
+[connection signal="pressed" from="Side/Margin/Options/Leave" to="." method="_on_leave_pressed"]
[connection signal="pressed" from="Side/Margin/Options/Lobby" to="." method="_on_lobby_pressed"]
[connection signal="pressed" from="Side/Margin/Options/Reconnect" to="." method="_on_reconnect_pressed"]
[connection signal="pressed" from="Side/Margin/Options/Settings" to="." method="_on_settings_pressed"]
diff --git a/client/menu/lobby.gd b/client/menu/lobby.gd
index 6e315a19..a31b38e9 100644
--- a/client/menu/lobby.gd
+++ b/client/menu/lobby.gd
@@ -20,8 +20,6 @@ const PLAYER = preload("res://menu/lobby/player.tscn")
var selected_map := 0
var selected_map_name: String
-var joined := false
-var join_sent := false
@onready var game: Game = $"../Game"
@onready var map_count = game.map_names.size()
@@ -38,6 +36,7 @@ func _ready():
initialize()
game.data_updated.connect(initialize)
game.joined.connect(_on_game_joined)
+ game.left.connect(_on_game_left)
func initialize():
map_count = game.map_names.size()
@@ -60,7 +59,7 @@ func update_players(player_list: Dictionary):
player_container.add_child(p)
p.setup(player_list[i].username)
-func _input(event):
+func _input(_event):
if not visible:
return
@@ -73,7 +72,10 @@ func _on_game_joined():
map_selector.show()
start_button.text = tr("Start Game")
start_button.disabled = false
- joined = true
+
+func _on_game_left():
+ map_selector.hide()
+ start_button.text = tr("Join Game")
func _on_left_pressed():
selected_map = (selected_map - 1) % map_count
@@ -84,10 +86,9 @@ func _on_right_pressed():
select_map(selected_map)
func _on_controller_button_pressed():
- if joined:
+ if game.is_joined:
if selected_map_name != null:
game.mp.send_chat("/start %s" % selected_map_name)
- elif not join_sent:
- join_sent = true
+ elif not game.join_sent:
start_button.disabled = true
game.join()