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;
_enemyPanel.OnEnemyClicked += OnEnemyClicked;
_enemyPanel.OnEnemyDead += OnEnemyDied;
_enemyPanel.OnEnemyDefeated += OnEnemyDefeated;
_menuPanel.OnItemSelected += OnMenuItemSelected;
_menuPanel.OnSelectionChanged += OnMenuSelectionChanged;
_menuPanel.OnCancelled += OnMenuCancel;
@@ -909,7 +910,7 @@ namespace Cthangover.FFBattle
OnPlayerTurnEnd();
}
private void OnEnemyDied(FFCharacterWidget widget)
private void OnEnemyDefeated(FFCharacterWidget widget)
{
var ctx = BattleSceneContext.Instance;
if (ctx != null && widget?.Card != null)
@@ -917,7 +918,10 @@ namespace Cthangover.FFBattle
ctx.RecordEnemyDefeated(widget.Card);
ctx.NotifyCharacterDied(widget.Card);
}
}
private void OnEnemyDied(FFCharacterWidget widget)
{
UpdateHudCounts();
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>
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>
public event System.Action<FFCharacterWidget> OnEnemyClicked;
@@ -168,6 +170,9 @@ namespace Cthangover.FFBattle.UI
GridLayout(true);
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>