refactor 2: 迁移局内资源真值
- CombatInRunResourceManager 现在持有并管理:
- CurrentCoin
- CurrentBaseHp
- MaxBaseHp
- GainedCoin / GainedGold
- 本局 BuildTowerStats 快照
- 奖励背包快照
- CombatInRunResourceManager.cs:38
- CombatInRunResourceManager.cs:46
- CombatInRunResourceManager.cs:89
- CombatInRunResourceManager.cs:156
- CombatScheduler 变成资源访问入口,不再通过 CombatNodeComponent 持有 coin/baseHp/build stats 真值。
- 启动时先初始化局内资源。
- 对外提供 CurrentCoin / CurrentGold / CurrentBaseHp / CurrentBuildTowerCount
- 提供 TryConsumeCoin / AddCoin / TryGetBuildTowerStats
- CombatNodeComponent 已退回 facade:
- 不再保存 _currentCoin / _currentGold / _currentBaseHp / _currentBuildTowerStats
- 只做只读转发和启动/结束协调
- 资源变化事件现在由资源管理器发布,并补上了 delta 字段:
额外修正
- Reset() 现在会清掉奖励背包里的 ParticipantTowerInstanceIds,避免跨局残留。
- TryConsumeCoin(0) 保持原先返回 true 的语义。
This commit is contained in:
@@ -10,17 +10,20 @@ namespace GeometryTD.CustomEvent
|
||||
public override int Id => EventId;
|
||||
|
||||
public int CurrentBaseHp { get; private set; }
|
||||
public int DeltaBaseHp { get; private set; }
|
||||
|
||||
|
||||
public CombatBaseHpChangedEventArgs()
|
||||
{
|
||||
CurrentBaseHp = 100;
|
||||
DeltaBaseHp = 0;
|
||||
}
|
||||
|
||||
public static CombatBaseHpChangedEventArgs Create(int currentBaseHp)
|
||||
public static CombatBaseHpChangedEventArgs Create(int currentBaseHp, int deltaBaseHp = 0)
|
||||
{
|
||||
var args = ReferencePool.Acquire<CombatBaseHpChangedEventArgs>();
|
||||
args.CurrentBaseHp = currentBaseHp;
|
||||
args.DeltaBaseHp = deltaBaseHp;
|
||||
|
||||
return args;
|
||||
}
|
||||
@@ -28,6 +31,7 @@ namespace GeometryTD.CustomEvent
|
||||
public override void Clear()
|
||||
{
|
||||
CurrentBaseHp = 100;
|
||||
DeltaBaseHp = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,17 +10,20 @@ namespace GeometryTD.CustomEvent
|
||||
public override int Id => EventId;
|
||||
|
||||
public int CurrentCoin { get; private set; }
|
||||
public int DeltaCoin { get; private set; }
|
||||
|
||||
|
||||
public CombatCoinChangedEventArgs()
|
||||
{
|
||||
CurrentCoin = 0;
|
||||
DeltaCoin = 0;
|
||||
}
|
||||
|
||||
public static CombatCoinChangedEventArgs Create(int currentCoin)
|
||||
public static CombatCoinChangedEventArgs Create(int currentCoin, int deltaCoin = 0)
|
||||
{
|
||||
var args = ReferencePool.Acquire<CombatCoinChangedEventArgs>();
|
||||
args.CurrentCoin = currentCoin;
|
||||
args.DeltaCoin = deltaCoin;
|
||||
|
||||
return args;
|
||||
}
|
||||
@@ -28,6 +31,7 @@ namespace GeometryTD.CustomEvent
|
||||
public override void Clear()
|
||||
{
|
||||
CurrentCoin = 0;
|
||||
DeltaCoin = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user