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_explanation.gd | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 client/gui/overlays/controls_visualization/controller/controller_explanation.gd (limited to 'client/gui/overlays/controls_visualization/controller/controller_explanation.gd') 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_) -- cgit v1.2.3-70-g09d2