Files
Gen_Hack-and-Slash-Roguelite/Client/Assets/Scripts/Data/AttributesOffsetDef.cs

68 lines
3.2 KiB
C#
Raw Permalink Normal View History

namespace Data
{
public class AttributesOffsetDef : Define
{
public float attackOffset;
public float attackPercentOffset;
public float attackRangeOffset;
public float attackRangePercentOffset;
public float attackSpeedOffset;
public float attackSpeedPercentOffset;
public float attackTargetCountOffset;
public float attackTargetCountPercentOffset;
public float damageTakenOffset;
public float damageTakenPercentOffset;
public float defenseOffset;
public float defensePercentOffset;
public float effectiveDamageOffset;
public float effectiveDamagePercentOffset;
public float healthOffset;
public float healthPercentOffset;
public float moveSpeedOffset;
public float moveSpeedPercentOffset;
/// <summary>
/// 重载加法操作符,用于合并两个 AttributesOffsetDef 实例。
/// </summary>
/// <param name="a">第一个属性修正定义。</param>
/// <param name="b">第二个属性修正定义。</param>
/// <returns>一个新的 AttributesOffsetDef 实例,包含两个输入的累加值。</returns>
public static AttributesOffsetDef operator +(AttributesOffsetDef a, AttributesOffsetDef b)
{
if (a == null && b == null) return new AttributesOffsetDef();
if (a == null) return b;
if (b == null) return a;
var combined = new AttributesOffsetDef
{
// 绝对值偏移累加
healthOffset = a.healthOffset + b.healthOffset,
moveSpeedOffset = a.moveSpeedOffset + b.moveSpeedOffset,
attackOffset = a.attackOffset + b.attackOffset,
defenseOffset = a.defenseOffset + b.defenseOffset,
attackSpeedOffset = a.attackSpeedOffset + b.attackSpeedOffset,
attackRangeOffset = a.attackRangeOffset + b.attackRangeOffset,
attackTargetCountOffset = a.attackTargetCountOffset + b.attackTargetCountOffset,
damageTakenOffset = a.damageTakenOffset + b.damageTakenOffset,
effectiveDamageOffset = a.effectiveDamageOffset + b.effectiveDamageOffset,
// 百分比偏移累加
healthPercentOffset = a.healthPercentOffset + b.healthPercentOffset,
moveSpeedPercentOffset = a.moveSpeedPercentOffset + b.moveSpeedPercentOffset,
attackPercentOffset = a.attackPercentOffset + b.attackPercentOffset,
defensePercentOffset = a.defensePercentOffset + b.defensePercentOffset,
attackSpeedPercentOffset = a.attackSpeedPercentOffset + b.attackSpeedPercentOffset,
attackRangePercentOffset = a.attackRangePercentOffset + b.attackRangePercentOffset,
attackTargetCountPercentOffset = a.attackTargetCountPercentOffset + b.attackTargetCountPercentOffset,
damageTakenPercentOffset = a.damageTakenPercentOffset + b.damageTakenPercentOffset,
effectiveDamagePercentOffset = a.effectiveDamagePercentOffset + b.effectiveDamagePercentOffset
};
return combined;
}
}
}