diff options
| author | tpart <tpart120@proton.me> | 2025-10-16 21:02:44 +0200 |
|---|---|---|
| committer | tpart <tpart120@proton.me> | 2025-10-16 21:02:50 +0200 |
| commit | 1532e80cf37c9ee77cd921a158499188a1e172b2 (patch) | |
| tree | d5ea0f47d4b5a0fed9b764d6a31f628bfe606c1d /client/map | |
| parent | 8fa812c2f55be090c950cff19b17e83ff5518879 (diff) | |
| download | hurrycurry-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.gd | 30 | ||||
| -rw-r--r-- | client/map/tiles/rolling_board.gd | 30 | ||||
| -rw-r--r-- | client/map/tiles/tile.gd | 2 |
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) |