aboutsummaryrefslogtreecommitdiff
path: root/client/menu
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-07-12 01:30:53 +0200
committermetamuffin <metamuffin@disroot.org>2024-07-12 01:30:53 +0200
commit55d3fd0c7ead5c47a3fbf63463b70af328e7dcc9 (patch)
tree994c689c3aa3e6ab62ec4bfac1ddf5aabb5f9d7d /client/menu
parent177056420c5f31a0fb41e9ce0a67fc90cad4312e (diff)
parent0f0c7713218dc9fc8beafdbe14785c11a0f61ea8 (diff)
downloadhurrycurry-55d3fd0c7ead5c47a3fbf63463b70af328e7dcc9.tar
hurrycurry-55d3fd0c7ead5c47a3fbf63463b70af328e7dcc9.tar.bz2
hurrycurry-55d3fd0c7ead5c47a3fbf63463b70af328e7dcc9.tar.zst
Merge branch 'master' of https://codeberg.org/hurrycurry/hurrycurry
Diffstat (limited to 'client/menu')
-rw-r--r--client/menu/character.gd16
-rw-r--r--client/menu/hint.svg10
-rw-r--r--client/menu/hint.svg.import37
-rw-r--r--client/menu/main.gd5
-rw-r--r--client/menu/popup_message.gd97
-rw-r--r--client/menu/popup_message.tscn128
-rw-r--r--client/menu/server_message.gd28
-rw-r--r--client/menu/server_message.tscn68
-rw-r--r--client/menu/setup.gd6
9 files changed, 283 insertions, 112 deletions
diff --git a/client/menu/character.gd b/client/menu/character.gd
index b4427e13..0d6a625c 100644
--- a/client/menu/character.gd
+++ b/client/menu/character.gd
@@ -23,8 +23,8 @@ extends Menu
func _ready():
super()
- $VBoxContainer/top_panel/a/username.text = Global.profile["username"]
- character.select_hairstyle(Global.profile["character"])
+ $VBoxContainer/top_panel/a/username.text = Global.get_profile("username")
+ character.select_hairstyle(Global.get_profile("character"))
init_map()
func init_map():
@@ -61,16 +61,14 @@ func _on_back_pressed():
OS.alert("Username cannot be empty.")
return
- Global.profile["username"] = username_edit.text
+ Global.set_profile("username", username_edit.text)
Global.save_profile()
replace_menu("res://menu/main.tscn")
func _on_character_back_pressed():
- Global.profile["character"] = (Global.profile["character"] - 1) % num_hairstyles
- character.select_hairstyle(Global.profile["character"])
- Global.save_profile()
+ Global.set_profile("character", (Global.get_profile("character") - 1) % num_hairstyles)
+ character.select_hairstyle(Global.get_profile("character"))
func _on_character_forward_pressed():
- Global.profile["character"] = (Global.profile["character"] + 1) % num_hairstyles
- character.select_hairstyle(Global.profile["character"])
- Global.save_profile()
+ Global.set_profile("character", (Global.get_profile("character") + 1) % num_hairstyles)
+ character.select_hairstyle(Global.get_profile("character"))
diff --git a/client/menu/hint.svg b/client/menu/hint.svg
new file mode 100644
index 00000000..ad64de91
--- /dev/null
+++ b/client/menu/hint.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="64px" height="64px" viewBox="0 0 64 64" version="1.1">
+<g id="surface1">
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,85.098039%,51.372549%);fill-opacity:1;" d="M 51.554688 19.664062 C 51.554688 31.109375 42.667969 32.886719 42.667969 43.554688 C 42.667969 49.0625 37.113281 49.527344 32.890625 49.527344 C 29.238281 49.527344 21.179688 48.140625 21.179688 43.550781 C 21.179688 32.890625 12.445312 31.109375 12.445312 19.664062 C 12.445312 8.941406 21.839844 0.25 32.148438 0.25 C 42.457031 0.25 51.554688 8.941406 51.554688 19.664062 Z M 51.554688 19.664062 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(80%,83.921569%,86.666667%);fill-opacity:1;" d="M 39.40625 57.777344 C 39.40625 59.25 35.4375 62.222656 32 62.222656 C 28.5625 62.222656 24.59375 59.25 24.59375 57.777344 C 24.59375 56.304688 28.5625 56.890625 32 56.890625 C 35.4375 56.890625 39.40625 56.304688 39.40625 57.777344 Z M 39.40625 57.777344 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,80%,30.196078%);fill-opacity:1;" d="M 40.367188 18.296875 C 39.671875 17.605469 38.550781 17.605469 37.855469 18.296875 L 32 24.152344 L 26.144531 18.296875 C 25.449219 17.605469 24.328125 17.605469 23.632812 18.296875 C 22.9375 18.992188 22.9375 20.117188 23.632812 20.8125 L 30.222656 27.402344 L 30.222656 46.222656 C 30.222656 47.207031 31.019531 48 32 48 C 32.980469 48 33.777344 47.207031 33.777344 46.222656 L 33.777344 27.402344 L 40.367188 20.8125 C 41.0625 20.117188 41.0625 18.992188 40.367188 18.296875 Z M 40.367188 18.296875 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(60%,66.666667%,70.980392%);fill-opacity:1;" d="M 42.667969 55.109375 C 42.667969 57.074219 41.074219 58.667969 39.109375 58.667969 L 24.890625 58.667969 C 22.925781 58.667969 21.332031 57.074219 21.332031 55.109375 L 21.332031 44.445312 L 42.667969 44.445312 Z M 42.667969 55.109375 "/>
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(80%,83.921569%,86.666667%);fill-opacity:1;" d="M 21.332031 56.890625 C 20.476562 56.890625 19.722656 56.273438 19.582031 55.402344 C 19.417969 54.4375 20.074219 53.519531 21.042969 53.359375 L 42.375 49.800781 C 43.34375 49.628906 44.257812 50.296875 44.417969 51.265625 C 44.582031 52.230469 43.925781 53.148438 42.957031 53.308594 L 21.625 56.863281 C 21.527344 56.882812 21.425781 56.890625 21.332031 56.890625 Z M 21.332031 49.777344 C 20.476562 49.777344 19.722656 49.160156 19.582031 48.292969 C 19.417969 47.324219 20.074219 46.40625 21.042969 46.246094 L 42.375 42.691406 C 43.34375 42.519531 44.257812 43.183594 44.417969 44.152344 C 44.582031 45.121094 43.925781 46.039062 42.957031 46.199219 L 21.625 49.753906 C 21.527344 49.769531 21.425781 49.777344 21.332031 49.777344 Z M 21.332031 49.777344 "/>
+</g>
+</svg>
diff --git a/client/menu/hint.svg.import b/client/menu/hint.svg.import
new file mode 100644
index 00000000..9f5eba04
--- /dev/null
+++ b/client/menu/hint.svg.import
@@ -0,0 +1,37 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://b2uv5rf0enikf"
+path="res://.godot/imported/hint.svg-84d80eb00de22610835892179ff94034.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://menu/hint.svg"
+dest_files=["res://.godot/imported/hint.svg-84d80eb00de22610835892179ff94034.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/client/menu/main.gd b/client/menu/main.gd
index 9fe026fe..a0ad2ee5 100644
--- a/client/menu/main.gd
+++ b/client/menu/main.gd
@@ -26,7 +26,7 @@ func _ready():
if OS.has_feature("web"):
quit_button.hide()
server.hide()
- connect_uri.text = Global.profile["last_server_url"]
+ connect_uri.text = Global.get_profile("last_server_url")
func menu_anim_cover(covered):
$side.visible = not covered
@@ -39,8 +39,7 @@ func _on_credits_pressed():
func _on_connect_pressed():
var url = connect_uri.text
- Global.profile["last_server_url"] = url
- Global.save_profile()
+ Global.set_profile("last_server_url", url)
connect_to(url)
func _on_quick_connect_pressed():
diff --git a/client/menu/popup_message.gd b/client/menu/popup_message.gd
new file mode 100644
index 00000000..e70e1fef
--- /dev/null
+++ b/client/menu/popup_message.gd
@@ -0,0 +1,97 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2024 tpart
+#
+# 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 MarginContainer
+class_name PopupMessage
+
+@onready var server_msg = $VBox/ServerMessage
+@onready var hint_msg = $VBox/HintMessage
+
+@onready var server_msg_timer: Timer = $ServerTimer
+@onready var hint_msg_timer: Timer = $HintTimer
+
+@onready var server_msg_label: Label = $VBox/ServerMessage/CenterContainer/Label
+@onready var hint_msg_label: Label = $VBox/HintMessage/CenterContainer/Label
+
+@onready var auto_hint_timers: Node = $AutoHintTimers
+
+@onready var reset_timer = $Reset
+
+func display_server_msg(msg: String):
+ server_msg.show()
+ server_msg_label.text = msg
+ server_msg_timer.start()
+
+func _on_server_timer_timeout():
+ server_msg.hide()
+
+func display_hint_msg(msg: String):
+ hint_msg.show()
+ hint_msg_label.text = tr("Hint") + ": %s" % msg
+ hint_msg_timer.start()
+
+func _on_hint_timer_timeout():
+ hint_msg.hide()
+
+func start_game_hints():
+ for c: Timer in auto_hint_timers.get_children():
+ c.start()
+
+func stop_game_hints():
+ _on_hint_timer_timeout()
+ for c: Timer in auto_hint_timers.get_children():
+ c.stop()
+
+func _input(_event):
+ if Input.is_action_just_pressed("boost"):
+ Global.set_profile("has_boosted", true)
+ if any_action_just_pressed(["forward", "backwards", "left", "right"]):
+ Global.set_profile("has_moved", true)
+ if any_action_just_pressed(["rotate_left", "rotate_right", "rotate_up", "rotate_down"]):
+ if not Global.get_profile("has_reset"):
+ reset_timer.start()
+ Global.set_profile("has_rotated", true)
+ if Input.is_action_just_pressed("interact"):
+ Global.set_profile("has_interacted", true)
+ if Input.is_action_just_pressed("reset"):
+ Global.set_profile("has_reset", true)
+
+func _on_boost_timeout():
+ if not Global.get_profile("has_boosted") and not Global.get_setting("touch_controls"):
+ display_hint_msg(tr("Press %s to boost") % display_keybind(tr("SHIFT"), "B"))
+
+func _on_move_timeout():
+ if not Global.get_profile("has_moved") and not Global.get_setting("touch_controls"):
+ display_hint_msg(tr("Use %s to move") % display_keybind("WASD", tr("left stick")))
+
+func _on_interact_timeout():
+ if not Global.get_profile("has_interacted") and not Global.get_setting("touch_controls"):
+ display_hint_msg(tr("Press %s to pick up items and interact with tools") % display_keybind(tr("SPACE"), "A"))
+
+func _on_reset_timeout():
+ if not Global.get_profile("has_reset") and not Global.get_setting("touch_controls"):
+ display_hint_msg(tr("Press %s to reset the camera view") % display_keybind("R", "Y"))
+
+func display_keybind(keyboard: String, joypad: String) -> String:
+ if Global.using_joypad:
+ return joypad + " (Joypad)"
+ return keyboard
+
+func any_action_just_pressed(actions: Array) -> bool:
+ for a: String in actions:
+ if Input.is_action_just_pressed(a):
+ return true
+ return false
+
diff --git a/client/menu/popup_message.tscn b/client/menu/popup_message.tscn
new file mode 100644
index 00000000..37133847
--- /dev/null
+++ b/client/menu/popup_message.tscn
@@ -0,0 +1,128 @@
+[gd_scene load_steps=10 format=3 uid="uid://b21nrnkygiyjt"]
+
+[ext_resource type="Theme" uid="uid://b0qmvo504e457" path="res://menu/theme/theme.tres" id="1_a1566"]
+[ext_resource type="Script" path="res://menu/popup_message.gd" id="2_sbew6"]
+[ext_resource type="Shader" path="res://menu/blur_mix.gdshader" id="3_2vnom"]
+[ext_resource type="FontFile" uid="uid://bk704sc5gkrb3" path="res://menu/theme/font-azaret-mono.woff2" id="4_wsrnf"]
+[ext_resource type="Texture2D" uid="uid://b2uv5rf0enikf" path="res://menu/hint.svg" id="5_2dxsd"]
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_k0m35"]
+shader = ExtResource("3_2vnom")
+shader_parameter/blur_amount = 3.5
+shader_parameter/mix_amount = 0.85
+shader_parameter/color_over = Color(0, 0, 0, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vq4dg"]
+bg_color = Color(1, 1, 1, 0.878431)
+corner_radius_top_left = 16
+corner_radius_top_right = 16
+corner_radius_bottom_right = 16
+corner_radius_bottom_left = 16
+
+[sub_resource type="FontVariation" id="FontVariation_qfltj"]
+base_font = ExtResource("4_wsrnf")
+variation_embolden = 0.75
+
+[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_3rgop"]
+content_margin_left = 32.0
+content_margin_top = 8.0
+content_margin_right = 32.0
+content_margin_bottom = 8.0
+
+[node name="PopupMessage" type="MarginContainer"]
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+mouse_filter = 2
+theme = ExtResource("1_a1566")
+script = ExtResource("2_sbew6")
+
+[node name="VBox" type="VBoxContainer" parent="."]
+layout_mode = 2
+mouse_filter = 2
+
+[node name="ServerMessage" type="PanelContainer" parent="VBox"]
+visible = false
+material = SubResource("ShaderMaterial_k0m35")
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 0
+mouse_filter = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_vq4dg")
+
+[node name="CenterContainer" type="CenterContainer" parent="VBox/ServerMessage"]
+layout_mode = 2
+
+[node name="Label" type="Label" parent="VBox/ServerMessage/CenterContainer"]
+layout_mode = 2
+theme_override_colors/font_color = Color(0, 0, 0, 1)
+theme_override_fonts/font = SubResource("FontVariation_qfltj")
+theme_override_styles/normal = SubResource("StyleBoxEmpty_3rgop")
+text = "Server message"
+
+[node name="HintMessage" type="PanelContainer" parent="VBox"]
+visible = false
+material = SubResource("ShaderMaterial_k0m35")
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 0
+mouse_filter = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_vq4dg")
+
+[node name="CenterContainer" type="HBoxContainer" parent="VBox/HintMessage"]
+layout_mode = 2
+
+[node name="MarginContainer" type="MarginContainer" parent="VBox/HintMessage/CenterContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 4
+theme_override_constants/margin_top = 4
+theme_override_constants/margin_right = 4
+theme_override_constants/margin_bottom = 4
+
+[node name="TextureRect" type="TextureRect" parent="VBox/HintMessage/CenterContainer/MarginContainer"]
+custom_minimum_size = Vector2(28, 28)
+layout_mode = 2
+texture = ExtResource("5_2dxsd")
+expand_mode = 1
+stretch_mode = 4
+
+[node name="Label" type="Label" parent="VBox/HintMessage/CenterContainer"]
+layout_mode = 2
+theme_override_fonts/font = SubResource("FontVariation_qfltj")
+theme_override_styles/normal = SubResource("StyleBoxEmpty_3rgop")
+text = "A hint is worth more than a thousand manuals"
+
+[node name="ServerTimer" type="Timer" parent="."]
+wait_time = 5.0
+one_shot = true
+
+[node name="HintTimer" type="Timer" parent="."]
+wait_time = 10.0
+one_shot = true
+
+[node name="AutoHintTimers" type="Node" parent="."]
+
+[node name="Move" type="Timer" parent="AutoHintTimers"]
+wait_time = 5.0
+one_shot = true
+
+[node name="Boost" type="Timer" parent="AutoHintTimers"]
+wait_time = 90.0
+one_shot = true
+
+[node name="Interact" type="Timer" parent="AutoHintTimers"]
+wait_time = 20.0
+one_shot = true
+
+[node name="Reset" type="Timer" parent="."]
+wait_time = 10.0
+one_shot = true
+
+[connection signal="timeout" from="ServerTimer" to="." method="_on_server_timer_timeout"]
+[connection signal="timeout" from="HintTimer" to="." method="_on_hint_timer_timeout"]
+[connection signal="timeout" from="AutoHintTimers/Move" to="." method="_on_move_timeout"]
+[connection signal="timeout" from="AutoHintTimers/Boost" to="." method="_on_boost_timeout"]
+[connection signal="timeout" from="AutoHintTimers/Interact" to="." method="_on_interact_timeout"]
+[connection signal="timeout" from="Reset" to="." method="_on_reset_timeout"]
diff --git a/client/menu/server_message.gd b/client/menu/server_message.gd
deleted file mode 100644
index f4acecfd..00000000
--- a/client/menu/server_message.gd
+++ /dev/null
@@ -1,28 +0,0 @@
-# Hurry Curry! - a game about cooking
-# Copyright 2024 tpart
-#
-# 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 MarginContainer
-class_name ServerMessage
-
-@onready var popup_timer = $PopupTimer
-@onready var popup_label = $VBoxContainer/ServerMessage/CenterContainer/Label
-
-func display_popup(msg: String):
- popup_label.text = msg
- show()
- popup_timer.start()
-
-func _on_popup_timer_timeout():
- hide()
diff --git a/client/menu/server_message.tscn b/client/menu/server_message.tscn
deleted file mode 100644
index 23eba490..00000000
--- a/client/menu/server_message.tscn
+++ /dev/null
@@ -1,68 +0,0 @@
-[gd_scene load_steps=9 format=3 uid="uid://b21nrnkygiyjt"]
-
-[ext_resource type="Theme" uid="uid://b0qmvo504e457" path="res://menu/theme/theme.tres" id="1_p0jm7"]
-[ext_resource type="Shader" path="res://menu/blur_mix.gdshader" id="2_e1f4e"]
-[ext_resource type="Script" path="res://menu/server_message.gd" id="2_j4xya"]
-[ext_resource type="FontFile" uid="uid://bk704sc5gkrb3" path="res://menu/theme/font-azaret-mono.woff2" id="4_71im4"]
-
-[sub_resource type="ShaderMaterial" id="ShaderMaterial_k0m35"]
-shader = ExtResource("2_e1f4e")
-shader_parameter/blur_amount = 3.5
-shader_parameter/mix_amount = 0.85
-shader_parameter/color_over = Color(1, 1, 1, 1)
-
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_vq4dg"]
-bg_color = Color(1, 1, 1, 0.878431)
-corner_radius_top_left = 16
-corner_radius_top_right = 16
-corner_radius_bottom_right = 16
-corner_radius_bottom_left = 16
-
-[sub_resource type="FontVariation" id="FontVariation_qfltj"]
-base_font = ExtResource("4_71im4")
-variation_embolden = 0.75
-
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_3rgop"]
-content_margin_left = 32.0
-content_margin_top = 8.0
-content_margin_right = 32.0
-content_margin_bottom = 8.0
-
-[node name="ServerMessage" type="MarginContainer"]
-visible = false
-anchors_preset = 15
-anchor_right = 1.0
-anchor_bottom = 1.0
-grow_horizontal = 2
-grow_vertical = 2
-mouse_filter = 2
-theme = ExtResource("1_p0jm7")
-script = ExtResource("2_j4xya")
-
-[node name="VBoxContainer" type="VBoxContainer" parent="."]
-layout_mode = 2
-mouse_filter = 2
-
-[node name="ServerMessage" type="PanelContainer" parent="VBoxContainer"]
-material = SubResource("ShaderMaterial_k0m35")
-layout_mode = 2
-size_flags_horizontal = 4
-size_flags_vertical = 0
-mouse_filter = 2
-theme_override_styles/panel = SubResource("StyleBoxFlat_vq4dg")
-
-[node name="CenterContainer" type="CenterContainer" parent="VBoxContainer/ServerMessage"]
-layout_mode = 2
-
-[node name="Label" type="Label" parent="VBoxContainer/ServerMessage/CenterContainer"]
-layout_mode = 2
-theme_override_colors/font_color = Color(0, 0, 0, 1)
-theme_override_fonts/font = SubResource("FontVariation_qfltj")
-theme_override_styles/normal = SubResource("StyleBoxEmpty_3rgop")
-text = "Server message"
-
-[node name="PopupTimer" type="Timer" parent="."]
-wait_time = 3.0
-one_shot = true
-
-[connection signal="timeout" from="PopupTimer" to="." method="_on_popup_timer_timeout"]
diff --git a/client/menu/setup.gd b/client/menu/setup.gd
index 3997475c..4a7dfcfb 100644
--- a/client/menu/setup.gd
+++ b/client/menu/setup.gd
@@ -49,10 +49,8 @@ func _on_sign_pressed():
anim.play_backwards("paper_slide")
await anim.animation_finished
- Global.profile["username"] = username.text
- Global.profile["character"] = character
+ Global.set_profile("username", username.text)
+ Global.set_profile("character", character)
Global.set_setting("setup_complete", true)
- Global.save_profile()
- Global.save_settings()
replace_menu("res://menu/main.tscn")