做不出来
This commit is contained in:
@@ -24,40 +24,7 @@ namespace Cielonos.MainGame.Characters
|
||||
RecoverEnergy(energyRegenRate, false);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 增减能量值,正值为增加(溢出部分按 OverloadConversionRate 转换为过载能量),负值为消耗。
|
||||
/// UI 更新和 onEnergyChanged 事件由属性值变更回调自动触发。
|
||||
/// </summary>
|
||||
public void AddEnergy(float amount)
|
||||
{
|
||||
if (amount == 0) return;
|
||||
|
||||
if (amount > 0)
|
||||
{
|
||||
float current = attributeSm[CharacterAttribute.Energy];
|
||||
float max = attributeSm[CharacterAttribute.MaximumEnergy];
|
||||
float availableSpace = max - current;
|
||||
|
||||
if (amount > availableSpace)
|
||||
{
|
||||
attributeSm[CharacterAttribute.Energy] = max;
|
||||
|
||||
float conversionRate = attributeSm.Has(CharacterAttribute.OverloadConversionRate) ? attributeSm[CharacterAttribute.OverloadConversionRate] : 1f;
|
||||
float overflowEnergy = (amount - availableSpace) * conversionRate;
|
||||
DistributeOverloadEnergy(overflowEnergy);
|
||||
}
|
||||
else
|
||||
{
|
||||
attributeSm[CharacterAttribute.Energy] += amount;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
attributeSm[CharacterAttribute.Energy] += amount;
|
||||
attributeSm[CharacterAttribute.Energy] = Mathf.Max(0, attributeSm[CharacterAttribute.Energy]);
|
||||
}
|
||||
}
|
||||
|
||||
private void DistributeOverloadEnergy(float totalOverflowAmount)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user