aboutsummaryrefslogtreecommitdiff
path: root/client/map/tiles/rolling_board.gd
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2025-09-21 22:19:39 +0200
committertpart <tpart120@proton.me>2025-09-21 22:19:44 +0200
commit483fba84229b42202157e9e9cc0ae2c394e48060 (patch)
tree2ccad6b215fdd809a5603c0eff95c650ba17b33c /client/map/tiles/rolling_board.gd
parentf8c0f3a15a80bbf01ac5f6586269b3b506d0c21a (diff)
downloadhurrycurry-483fba84229b42202157e9e9cc0ae2c394e48060.tar
hurrycurry-483fba84229b42202157e9e9cc0ae2c394e48060.tar.bz2
hurrycurry-483fba84229b42202157e9e9cc0ae2c394e48060.tar.zst
Add rolling board model; Add rolling pin model; Add rolling pin animation (#393)
Diffstat (limited to 'client/map/tiles/rolling_board.gd')
-rw-r--r--client/map/tiles/rolling_board.gd57
1 files changed, 57 insertions, 0 deletions
diff --git a/client/map/tiles/rolling_board.gd b/client/map/tiles/rolling_board.gd
new file mode 100644
index 00000000..078897b1
--- /dev/null
+++ b/client/map/tiles/rolling_board.gd
@@ -0,0 +1,57 @@
+# 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 <https://www.gnu.org/licenses/>.
+#
+class_name RollingBoard
+extends CounterBase
+
+var board = load("res://map/tiles/rolling_board.tscn").instantiate()
+var rolling: AudioStreamPlayer3D = AudioStreamPlayer3D.new()
+var acting_player
+
+func _init(ctx: TileFactory.TileCC):
+ super(ctx)
+ rolling.stream = preload("res://map/tiles/sounds/roll.ogg")
+ rolling.volume_db = -10
+ add_child(rolling)
+ base.add_child(board)
+
+func progress(position_: float, speed: float, warn: bool, acting_player_):
+ super(position_, speed, warn, acting_player)
+ var pin: Node3D = board.get_node("RollingPin")
+ acting_player = acting_player_
+
+ if not rolling.playing and speed != 0.:
+ rolling.play()
+ if acting_player != null:
+ pin.visible = false
+ var acting_character: Character = acting_player.character
+ acting_character.rolling = true
+ elif speed == 0:
+ rolling.stop()
+ pin.visible = true
+ if acting_player != null:
+ var acting_character: Character = acting_player.character
+ acting_character.rolling = false
+
+func finish():
+ super()
+ if is_instance_valid(acting_player):
+ var acting_character: Character = acting_player.character
+ acting_character.rolling = false
+ board.get_node("RollingPin").visible = true
+ rolling.stop()
+
+static func interact_target() -> Vector3:
+ return Vector3(0., 0.575, 0.)