Session closing and quitting fixes

This commit is contained in:
Rendo 2025-12-08 18:48:50 +05:00
commit 75427dd336
4 changed files with 27 additions and 3 deletions

View file

@ -11,6 +11,9 @@ config_version=5
[application]
config/name="Chelimbalo"
config/name_localized={
"ru_RU": "Челимбало"
}
run/main_scene="uid://dstie24qkbc86"
config/features=PackedStringArray("4.5", "Forward Plus")
config/icon="res://icon.svg"

View file

@ -32,6 +32,7 @@ layout_mode = 2
text = "Чувствительность"
[node name="SensitivitySlider" type="HSlider" parent="CenterContainer/PanelContainer/VBoxContainer/Sensitivity"]
unique_name_in_owner = true
custom_minimum_size = Vector2(256, 0)
layout_mode = 2
size_flags_horizontal = 3
@ -41,6 +42,7 @@ step = 0.001
value = 0.02
[node name="SensitivityBox" type="SpinBox" parent="CenterContainer/PanelContainer/VBoxContainer/Sensitivity"]
unique_name_in_owner = true
layout_mode = 2
max_value = 0.1
step = 0.001
@ -56,6 +58,7 @@ layout_mode = 2
text = "Геймплейные звуки"
[node name="GameplayMainSlider" type="HSlider" parent="CenterContainer/PanelContainer/VBoxContainer/GameplayMainAudio"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
max_value = 1.0
@ -64,12 +67,20 @@ value = 1.0
[node name="LeaveButton" type="Button" parent="CenterContainer/PanelContainer/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Покинуть сессию"
[node name="StopSession" type="Button" parent="CenterContainer/PanelContainer/VBoxContainer"]
unique_name_in_owner = true
visible = false
layout_mode = 2
text = "Окончить сессию"
[connection signal="pressed" from="CenterContainer/PanelContainer/VBoxContainer/FullscreenButton" to="CenterContainer/PanelContainer" method="_on_fullscreen_button_pressed"]
[connection signal="toggled" from="CenterContainer/PanelContainer/VBoxContainer/FullscreenButton" to="CenterContainer/PanelContainer" method="_on_fullscreen_button_toggled"]
[connection signal="value_changed" from="CenterContainer/PanelContainer/VBoxContainer/Sensitivity/SensitivitySlider" to="CenterContainer/PanelContainer" method="_on_sensitivity_slider_value_changed"]
[connection signal="value_changed" from="CenterContainer/PanelContainer/VBoxContainer/Sensitivity/SensitivityBox" to="CenterContainer/PanelContainer" method="_on_sensitivity_box_value_changed"]
[connection signal="value_changed" from="CenterContainer/PanelContainer/VBoxContainer/GameplayMainAudio/GameplayMainSlider" to="CenterContainer/PanelContainer" method="_on_gameplay_main_slider_value_changed"]
[connection signal="pressed" from="CenterContainer/PanelContainer/VBoxContainer/LeaveButton" to="CenterContainer/PanelContainer" method="_on_leave_button_pressed"]
[connection signal="pressed" from="CenterContainer/PanelContainer/VBoxContainer/StopSession" to="CenterContainer/PanelContainer" method="_on_stop_session_pressed"]

View file

@ -6,6 +6,8 @@ func _ready() -> void:
hide()
Session.session_started.connect(%LeaveButton.show)
Session.session_ended.connect(%LeaveButton.hide)
Lobby.lobby_created.connect(%StopSession.show)
Lobby.lobby_closed.connect(%StopSession.hide)
func _input(event: InputEvent) -> void:
if event.is_action_pressed("menu_settings"):
@ -24,13 +26,16 @@ func _on_fullscreen_button_toggled(toggled_on: bool) -> void:
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN if toggled_on else DisplayServer.WINDOW_MODE_WINDOWED)
func _on_sensitivity_slider_value_changed(value: float) -> void:
$VBoxContainer/Sensitivity/SpinBox.set_value_no_signal(value)
%SensitivityBox.set_value_no_signal(value)
ClientSettings.SENSITIVITY = value
func _on_sensitivity_box_value_changed(value: float) -> void:
$VBoxContainer/Sensitivity/HSlider.set_value_no_signal(value)
%SensitivitySlider.set_value_no_signal(value)
ClientSettings.SENSITIVITY = value
func _on_leave_button_pressed() -> void:
Session.quit_session()
func _on_stop_session_pressed() -> void:
if multiplayer.is_server():
Session.end_session()

View file

@ -152,12 +152,17 @@ func end_session() -> void:
buy_timer.stop()
object_containers.clear()
session_ended.emit()
session_started_flag = false
dynamic_objects_spawner = null
plants = []
plant_deadzones = {}
func quit_session() -> void:
if multiplayer.is_server():
end_session()
await get_tree().create_timer(0.1).timeout
else:
session_ended.emit()
session_started_flag = false