- 添加 CombatFailedState 执行路径

- CombatInfoForm 测试异常方法
This commit is contained in:
2026-03-07 18:45:25 +08:00
parent 3badbe9212
commit eb818e6295
12 changed files with 338 additions and 18 deletions
@@ -20,6 +20,7 @@ namespace GeometryTD.UI
{
GameEntry.Event.Subscribe(CombatPauseEventArgs.EventId, OnCombatPauseButtonClicked);
GameEntry.Event.Subscribe(CombatEndEventArgs.EventId, OnCombatEndButtonClicked);
GameEntry.Event.Subscribe(CombatDebugFailEventArgs.EventId, OnCombatDebugFailButtonClicked);
GameEntry.Event.Subscribe(CombatProcessEventArgs.EventId, OnCombatProcessChanged);
GameEntry.Event.Subscribe(CombatCoinChangedEventArgs.EventId, OnCombatCoinChanged);
GameEntry.Event.Subscribe(CombatBaseHpChangedEventArgs.EventId, OnCombatBaseHpChanged);
@@ -30,6 +31,7 @@ namespace GeometryTD.UI
{
GameEntry.Event.Unsubscribe(CombatPauseEventArgs.EventId, OnCombatPauseButtonClicked);
GameEntry.Event.Unsubscribe(CombatEndEventArgs.EventId, OnCombatEndButtonClicked);
GameEntry.Event.Unsubscribe(CombatDebugFailEventArgs.EventId, OnCombatDebugFailButtonClicked);
GameEntry.Event.Unsubscribe(CombatProcessEventArgs.EventId, OnCombatProcessChanged);
GameEntry.Event.Unsubscribe(CombatCoinChangedEventArgs.EventId, OnCombatCoinChanged);
GameEntry.Event.Unsubscribe(CombatBaseHpChangedEventArgs.EventId, OnCombatBaseHpChanged);
@@ -176,6 +178,16 @@ namespace GeometryTD.UI
_useCase?.TryEndCombat();
}
private void OnCombatDebugFailButtonClicked(object sender, GameEventArgs e)
{
if (!(sender is CombatInfoForm) || !(e is CombatDebugFailEventArgs))
{
return;
}
_useCase?.TryDebugFail();
}
private void OnCombatProcessChanged(object sender, GameEventArgs e)
{
if (!(e is CombatProcessEventArgs))
@@ -8,6 +8,7 @@ namespace GeometryTD.UI
{
private Func<CombatInfoFormRawData> _modelProvider;
private Func<bool> _tryEndCombat;
private Func<bool> _tryDebugFail;
public CombatInfoFormRawData CreateInitialModel()
{
@@ -19,10 +20,11 @@ namespace GeometryTD.UI
return BuildModel();
}
public void Configure(Func<CombatInfoFormRawData> modelProvider, Func<bool> tryEndCombat)
public void Configure(Func<CombatInfoFormRawData> modelProvider, Func<bool> tryEndCombat, Func<bool> tryDebugFail)
{
_modelProvider = modelProvider;
_tryEndCombat = tryEndCombat;
_tryDebugFail = tryDebugFail;
}
public bool TryEndCombat()
@@ -35,6 +37,16 @@ namespace GeometryTD.UI
return _tryEndCombat.Invoke();
}
public bool TryDebugFail()
{
if (_tryDebugFail == null)
{
return false;
}
return _tryDebugFail.Invoke();
}
private CombatInfoFormRawData BuildModel()
{
return _modelProvider != null ? _modelProvider.Invoke() : null;
@@ -83,6 +83,11 @@ namespace GeometryTD.UI
GameEntry.Event.Fire(this, CombatEndEventArgs.Create());
}
public void OnFailButtonClick()
{
GameEntry.Event.Fire(this, CombatDebugFailEventArgs.Create());
}
protected override void OnOpen(object userData)
{
base.OnOpen(userData);