Record defeated enemy rewards before victory checks

This commit is contained in:
cthangover committed 2026-10-27 01:07:30 +01:00
1 parent f1572374f5
commit cd9c05afb3
2 files changed
+10 -1

No files matched your search

+5 -1
View File
@@ -152,6 +152,7 @@ namespace Cthangover.FFBattle
_playerPanel.OnWidgetClicked += OnWidgetClicked; _playerPanel.OnWidgetClicked += OnWidgetClicked;
_enemyPanel.OnEnemyClicked += OnEnemyClicked; _enemyPanel.OnEnemyClicked += OnEnemyClicked;
_enemyPanel.OnEnemyDead += OnEnemyDied; _enemyPanel.OnEnemyDead += OnEnemyDied;
_enemyPanel.OnEnemyDefeated += OnEnemyDefeated;
_menuPanel.OnItemSelected += OnMenuItemSelected; _menuPanel.OnItemSelected += OnMenuItemSelected;
_menuPanel.OnSelectionChanged += OnMenuSelectionChanged; _menuPanel.OnSelectionChanged += OnMenuSelectionChanged;
_menuPanel.OnCancelled += OnMenuCancel; _menuPanel.OnCancelled += OnMenuCancel;
@@ -909,7 +910,7 @@ namespace Cthangover.FFBattle
OnPlayerTurnEnd(); OnPlayerTurnEnd();
} }
private void OnEnemyDied(FFCharacterWidget widget) private void OnEnemyDefeated(FFCharacterWidget widget)
{ {
var ctx = BattleSceneContext.Instance; var ctx = BattleSceneContext.Instance;
if (ctx != null && widget?.Card != null) if (ctx != null && widget?.Card != null)
@@ -917,7 +918,10 @@ namespace Cthangover.FFBattle
ctx.RecordEnemyDefeated(widget.Card); ctx.RecordEnemyDefeated(widget.Card);
ctx.NotifyCharacterDied(widget.Card); ctx.NotifyCharacterDied(widget.Card);
} }
}
private void OnEnemyDied(FFCharacterWidget widget)
{
UpdateHudCounts(); UpdateHudCounts();
if (!_enemyPanel.HasAlive()) if (!_enemyPanel.HasAlive())
+5
View File
@@ -31,6 +31,8 @@ namespace Cthangover.FFBattle.UI
/// <summary>Raised when a widget's death animation completes and the widget is removed.</summary> /// <summary>Raised when a widget's death animation completes and the widget is removed.</summary>
public event System.Action<FFCharacterWidget> OnEnemyDead; public event System.Action<FFCharacterWidget> OnEnemyDead;
/// <summary>Raised at lethal damage, before any victory check can consume the loot ledger.</summary>
public event System.Action<FFCharacterWidget> OnEnemyDefeated;
/// <summary>Raised when an enemy widget is clicked (used for target selection).</summary> /// <summary>Raised when an enemy widget is clicked (used for target selection).</summary>
public event System.Action<FFCharacterWidget> OnEnemyClicked; public event System.Action<FFCharacterWidget> OnEnemyClicked;
@@ -168,6 +170,9 @@ namespace Cthangover.FFBattle.UI
GridLayout(true); GridLayout(true);
OnEnemyDead?.Invoke(widget); OnEnemyDead?.Invoke(widget);
}); });
// Victory can be resolved while the dissolve is still running.
// Record rewards synchronously instead of waiting for its callback.
OnEnemyDefeated?.Invoke(widget);
} }
/// <summary>Removes a widget from the panel, frees it, and re-grids the remaining widgets.</summary> /// <summary>Removes a widget from the panel, frees it, and re-grids the remaining widgets.</summary>