Fix multiplayer parity and release regressions

This commit is contained in:
Alexander Sellite 2026-07-30 14:01:07 -04:00
parent b18d9392d8
commit c0ff78322d
17 changed files with 378 additions and 17 deletions

View file

@ -243,6 +243,9 @@ func show_reel_position(world_position: Vector3, _input_held: bool) -> void:
func play_outcome(outcome: StringName) -> void:
if _mode == VisualMode.NONE:
cleanup()
# Gameplay completion must not depend on a presentation tween still
# being active. The caller owns idempotency for the outcome.
outcome_completed.emit(outcome)
return
_kill_active_tween()

View file

@ -134,6 +134,7 @@ var _pending_catch: FishCatchType
var _showcase_ready: bool = false
var _put_away_press_armed: bool = false
var _showcase_restore_generation: int = 0
var _showcase_outcome_completed: bool = false
var _network_auto_click_accumulator: float = 0.0
var _network_active_barrier_index: int = -1
@ -874,6 +875,7 @@ func _on_catch_completed() -> void:
return
state = FishingState.SHOWING_CATCH
_showcase_ready = false
_showcase_outcome_completed = false
_put_away_press_armed = false
_catch_controller.reset()
_presentation.set_line_mode(FishingPresentationType.LineMode.TAUT)
@ -896,8 +898,10 @@ func _on_outcome_completed(outcome: StringName) -> void:
or state != FishingState.SHOWING_CATCH
or _active_player == null
or _pending_catch == null
or _showcase_outcome_completed
):
return
_showcase_outcome_completed = true
_showcase_ready = true
_active_player.begin_catch_showcase(_pending_catch)
showcase_changed.emit(
@ -923,6 +927,7 @@ func _put_away_catch() -> void:
_local_collection_log.mark_discovered(_pending_catch.fish_id)
_pending_catch = null
_showcase_ready = false
_showcase_outcome_completed = false
_put_away_press_armed = false
showcase_changed.emit("", "", 0.0, false)
_showcase_restore_generation += 1
@ -973,6 +978,7 @@ func _cleanup_attempt(
_selected_fish = null
_pending_catch = null
_showcase_ready = false
_showcase_outcome_completed = false
_put_away_press_armed = false
showcase_changed.emit("", "", 0.0, false)
_catch_controller.reset()
@ -1257,6 +1263,7 @@ func _on_network_catch_received(fish_catch: FishCatchType) -> void:
_pending_catch = fish_catch
state = FishingState.SHOWING_CATCH
_showcase_ready = false
_showcase_outcome_completed = false
_put_away_press_armed = false
catch_display_changed.emit(
0.0, 0.0, PackedFloat32Array(), PackedInt32Array(),