From c1e826625f3ca3116d482b27e2f0b230cbd55346 Mon Sep 17 00:00:00 2001 From: tpart Date: Mon, 29 Sep 2025 22:50:44 +0200 Subject: Add new controls explanation (Closes #427) --- .../controller/controller.svg | 309 +++++++++++++++++++++ .../controller/controller.svg.import | 43 +++ .../controller/controller_explanation.gd | 45 +++ .../controller/controller_explanation.gd.uid | 1 + .../controller/controller_explanation.tscn | 126 +++++++++ 5 files changed, 524 insertions(+) create mode 100644 client/gui/overlays/controls_visualization/controller/controller.svg create mode 100644 client/gui/overlays/controls_visualization/controller/controller.svg.import create mode 100644 client/gui/overlays/controls_visualization/controller/controller_explanation.gd create mode 100644 client/gui/overlays/controls_visualization/controller/controller_explanation.gd.uid create mode 100644 client/gui/overlays/controls_visualization/controller/controller_explanation.tscn (limited to 'client/gui/overlays/controls_visualization/controller') diff --git a/client/gui/overlays/controls_visualization/controller/controller.svg b/client/gui/overlays/controls_visualization/controller/controller.svg new file mode 100644 index 00000000..ad616301 --- /dev/null +++ b/client/gui/overlays/controls_visualization/controller/controller.svg @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client/gui/overlays/controls_visualization/controller/controller.svg.import b/client/gui/overlays/controls_visualization/controller/controller.svg.import new file mode 100644 index 00000000..79a6e2d7 --- /dev/null +++ b/client/gui/overlays/controls_visualization/controller/controller.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://doo07i13vtb34" +path="res://.godot/imported/controller.svg-cfc5787dc7bf7b1a87918dcfd10423cd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/overlays/controls_visualization/controller/controller.svg" +dest_files=["res://.godot/imported/controller.svg-cfc5787dc7bf7b1a87918dcfd10423cd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/gui/overlays/controls_visualization/controller/controller_explanation.gd b/client/gui/overlays/controls_visualization/controller/controller_explanation.gd new file mode 100644 index 00000000..84e93cfa --- /dev/null +++ b/client/gui/overlays/controls_visualization/controller/controller_explanation.gd @@ -0,0 +1,45 @@ +# 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 . +# +class_name ControllerExplanation +extends DeviceExplanation + +const MODULATE_SPEED := 5. + +var double_handed := false + +@onready var left_hand: Node2D = $Control/Node2D/InteractLeft +@onready var right_hand: Node2D = $Control/Node2D/InteractRight + +@onready var left_arrow: Sprite2D = $Control/Node2D/Arrow4 + +@onready var interact_right_label: Label = $Control/Node2D/InteractRight/Label + +func toggle_double_handed(val: bool) -> void: + double_handed = val + left_hand.visible = val + left_arrow.visible = val + interact_right_label.text = tr("c.controls_explanation.interact_right") if val else tr("c.settings.input.interact") + +var t := 0. +func _process(delta: float) -> void: + if not double_handed: return + + t += delta + var weight: float = (cos(t * MODULATE_SPEED) - 1.) * -0.5 + for i: Node2D in [left_hand,right_hand]: + i.modulate = Color.WHITE.lerp(Color("ffcd59ff"), weight) + var size_ := lerpf(1, 1.2, weight) + i.scale = Vector2(size_, size_) diff --git a/client/gui/overlays/controls_visualization/controller/controller_explanation.gd.uid b/client/gui/overlays/controls_visualization/controller/controller_explanation.gd.uid new file mode 100644 index 00000000..5bdb1e6c --- /dev/null +++ b/client/gui/overlays/controls_visualization/controller/controller_explanation.gd.uid @@ -0,0 +1 @@ +uid://dsg537e6dc68 diff --git a/client/gui/overlays/controls_visualization/controller/controller_explanation.tscn b/client/gui/overlays/controls_visualization/controller/controller_explanation.tscn new file mode 100644 index 00000000..410f2592 --- /dev/null +++ b/client/gui/overlays/controls_visualization/controller/controller_explanation.tscn @@ -0,0 +1,126 @@ +[gd_scene load_steps=5 format=3 uid="uid://ceex0cpjrb81p"] + +[ext_resource type="Script" uid="uid://dsg537e6dc68" path="res://gui/overlays/controls_visualization/controller/controller_explanation.gd" id="1_n0s1n"] +[ext_resource type="FontVariation" uid="uid://cl6m4hqsnrpav" path="res://gui/resources/fonts/sansita-swashed-bold.tres" id="2_ewgm4"] +[ext_resource type="Texture2D" uid="uid://cf8hrxilqe2ih" path="res://gui/overlays/controls_visualization/arrow.svg" id="3_565r1"] +[ext_resource type="Texture2D" uid="uid://doo07i13vtb34" path="res://gui/overlays/controls_visualization/controller/controller.svg" id="5_nalwd"] + +[node name="ControllerExplanation" type="Control"] +custom_minimum_size = Vector2(0, 450) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_bottom = -270.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_n0s1n") + +[node name="Control" type="Control" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Node2D" type="Node2D" parent="Control"] +position = Vector2(0, 50) + +[node name="Controller" type="Sprite2D" parent="Control/Node2D"] +scale = Vector2(0.4, 0.4) +texture = ExtResource("5_nalwd") + +[node name="Arrow" type="Sprite2D" parent="Control/Node2D"] +position = Vector2(-250, -150) +rotation = 1.5707964 +scale = Vector2(0.5, 0.5) +texture = ExtResource("3_565r1") + +[node name="Arrow4" type="Sprite2D" parent="Control/Node2D"] +position = Vector2(45, -150) +scale = Vector2(0.5, -0.5) +texture = ExtResource("3_565r1") + +[node name="Arrow2" type="Sprite2D" parent="Control/Node2D"] +position = Vector2(260, -140) +rotation = 1.5707963 +scale = Vector2(0.5, -0.5) +texture = ExtResource("3_565r1") + +[node name="Arrow3" type="Sprite2D" parent="Control/Node2D"] +position = Vector2(215, 20) +rotation = -1.5707964 +scale = Vector2(0.5, 0.5) +texture = ExtResource("3_565r1") + +[node name="Move" type="Node2D" parent="Control/Node2D"] +position = Vector2(-330, -175) + +[node name="Label" type="Label" parent="Control/Node2D/Move"] +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -549.0 +offset_top = -24.5 +offset_bottom = 24.5 +grow_horizontal = 0 +grow_vertical = 2 +theme_override_fonts/font = ExtResource("2_ewgm4") +theme_override_font_sizes/font_size = 40 +text = "c.controls_explanation.move" +horizontal_alignment = 2 + +[node name="Boost" type="Node2D" parent="Control/Node2D"] +position = Vector2(335, -165) + +[node name="Label" type="Label" parent="Control/Node2D/Boost"] +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_top = -24.5 +offset_right = 549.0 +offset_bottom = 24.5 +grow_vertical = 2 +theme_override_fonts/font = ExtResource("2_ewgm4") +theme_override_font_sizes/font_size = 40 +text = "c.controls_explanation.boost" + +[node name="InteractRight" type="Node2D" parent="Control/Node2D"] +position = Vector2(290, 25) + +[node name="Label" type="Label" parent="Control/Node2D/InteractRight"] +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_top = -24.5 +offset_right = 549.0 +offset_bottom = 24.5 +grow_vertical = 2 +theme_override_fonts/font = ExtResource("2_ewgm4") +theme_override_font_sizes/font_size = 40 +text = "c.controls_explanation.interact_right" + +[node name="InteractLeft" type="Node2D" parent="Control/Node2D"] +position = Vector2(20, -250) + +[node name="Label" type="Label" parent="Control/Node2D/InteractLeft"] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -274.5 +offset_top = -24.5 +offset_right = 274.5 +offset_bottom = 24.5 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_fonts/font = ExtResource("2_ewgm4") +theme_override_font_sizes/font_size = 40 +text = "c.controls_explanation.interact_left" +horizontal_alignment = 1 -- cgit v1.2.3-70-g09d2