aboutsummaryrefslogtreecommitdiff
path: root/client/map
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2025-10-16 21:02:44 +0200
committertpart <tpart120@proton.me>2025-10-16 21:02:50 +0200
commit1532e80cf37c9ee77cd921a158499188a1e172b2 (patch)
treed5ea0f47d4b5a0fed9b764d6a31f628bfe606c1d /client/map
parent8fa812c2f55be090c950cff19b17e83ff5518879 (diff)
downloadhurrycurry-1532e80cf37c9ee77cd921a158499188a1e172b2.tar
hurrycurry-1532e80cf37c9ee77cd921a158499188a1e172b2.tar.bz2
hurrycurry-1532e80cf37c9ee77cd921a158499188a1e172b2.tar.zst
Fix cutting animation not stopping when multiple people cut at once (Closes #472)
Diffstat (limited to 'client/map')
-rw-r--r--client/map/tiles/cutting_board.gd30
-rw-r--r--client/map/tiles/rolling_board.gd30
-rw-r--r--client/map/tiles/tile.gd2
3 files changed, 31 insertions, 31 deletions
diff --git a/client/map/tiles/cutting_board.gd b/client/map/tiles/cutting_board.gd
index 300b5700..9ee93522 100644
--- a/client/map/tiles/cutting_board.gd
+++ b/client/map/tiles/cutting_board.gd
@@ -18,7 +18,7 @@ extends CounterBase
var board = load("res://map/tiles/cutting_board.tscn").instantiate()
var chopping: AudioStreamPlayer3D = AudioStreamPlayer3D.new()
-var acting_player
+var acting_players: Array[Player] = []
func _init(ctx: TileFactory.TileCC):
super(ctx)
@@ -26,29 +26,29 @@ func _init(ctx: TileFactory.TileCC):
add_child(chopping)
base.add_child(board)
-func progress(position_: float, speed: float, warn: bool, acting_player_):
- super(position_, speed, warn, acting_player)
+func progress(position_: float, speed: float, warn: bool, acting_players_: Array[Player]):
+ super(position_, speed, warn, acting_players)
var knife: Node3D = board.get_node("Knife")
- acting_player = acting_player_
- if not chopping.playing and speed != 0.:
- chopping.play()
- if acting_player != null:
+ if speed != 0.:
+ if not chopping.playing: chopping.play()
+ var players_who_stopped := G.unordered_array_difference(acting_players, acting_players_)
+ for p: Player in players_who_stopped:
+ if p != null: p.character.cutting = false
+ for p: Player in acting_players_:
knife.visible = false
- var acting_character: Character = acting_player.character
- acting_character.cutting = true
+ p.character.cutting = true
elif speed == 0:
chopping.stop()
knife.visible = true
- if acting_player != null:
- var acting_character: Character = acting_player.character
- acting_character.cutting = false
+ for p: Player in acting_players:
+ p.character.cutting = false
+ acting_players = acting_players_
func finish():
super()
- if is_instance_valid(acting_player):
- var acting_character: Character = acting_player.character
- acting_character.cutting = false
+ for p: Player in acting_players:
+ p.character.cutting = false
board.get_node("Knife").visible = true
chopping.stop()
diff --git a/client/map/tiles/rolling_board.gd b/client/map/tiles/rolling_board.gd
index 078897b1..fd118b72 100644
--- a/client/map/tiles/rolling_board.gd
+++ b/client/map/tiles/rolling_board.gd
@@ -18,7 +18,7 @@ extends CounterBase
var board = load("res://map/tiles/rolling_board.tscn").instantiate()
var rolling: AudioStreamPlayer3D = AudioStreamPlayer3D.new()
-var acting_player
+var acting_players: Array[Player]
func _init(ctx: TileFactory.TileCC):
super(ctx)
@@ -27,29 +27,29 @@ func _init(ctx: TileFactory.TileCC):
add_child(rolling)
base.add_child(board)
-func progress(position_: float, speed: float, warn: bool, acting_player_):
- super(position_, speed, warn, acting_player)
+func progress(position_: float, speed: float, warn: bool, acting_players_: Array[Player]):
+ super(position_, speed, warn, acting_players_)
var pin: Node3D = board.get_node("RollingPin")
- acting_player = acting_player_
- if not rolling.playing and speed != 0.:
- rolling.play()
- if acting_player != null:
+ if speed != 0.:
+ if not rolling.playing: rolling.play()
+ var players_who_stopped := G.unordered_array_difference(acting_players, acting_players_)
+ for p: Player in players_who_stopped:
+ if p != null: p.character.rolling = false
+ for p: Player in acting_players_:
pin.visible = false
- var acting_character: Character = acting_player.character
- acting_character.rolling = true
+ p.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
+ for p: Player in acting_players:
+ p.character.rolling = false
+ acting_players = acting_players_
func finish():
super()
- if is_instance_valid(acting_player):
- var acting_character: Character = acting_player.character
- acting_character.rolling = false
+ for p: Player in acting_players:
+ p.character.rolling = false
board.get_node("RollingPin").visible = true
rolling.stop()
diff --git a/client/map/tiles/tile.gd b/client/map/tiles/tile.gd
index 9d4d732e..27d791c3 100644
--- a/client/map/tiles/tile.gd
+++ b/client/map/tiles/tile.gd
@@ -57,7 +57,7 @@ static func interact_target() -> Vector3:
func interact():
pass
-func progress(position_: float, speed: float, warn: bool, _acting_player):
+func progress(position_: float, speed: float, warn: bool, _acting_players: Array[Player]):
if item != null:
item.progress(position_, speed, warn)