using Godot; using Mr.BrickAdventures.Autoloads; using Mr.BrickAdventures.Progression; namespace Mr.BrickAdventures.scripts.Events; /// /// Records collected coins against the current Attempt. /// /// /// Coins are banked only by a First Clear, so dying loses what was found this attempt — including /// anything spent from it. See docs/adr/0002-attempt-is-a-ledger.md. /// public partial class CoinStateHandler : Node { public override void _Ready() { EventBus.Instance.CoinCollected += OnCoinCollected; } public override void _ExitTree() { if (EventBus.Instance != null) EventBus.Instance.CoinCollected -= OnCoinCollected; } private void OnCoinCollected(int amount, Vector2 position) { if (amount <= 0) return; ProgressionRoot.Instance?.RecordCoinsFound(Coins.Of(amount)); } }