using Milimoe.FunGame.Core.Api.Utility;
using Milimoe.FunGame.Core.Library.Constant;
namespace Milimoe.FunGame.Core.Entity
{
///
/// 角色的魔法抗性,对不同的魔法类型有不同抗性
///
public class MagicResistance
{
///
/// 无属性魔法抗性
///
public double None { get; set; } = 0;
///
/// 星痕魔法抗性
///
public double Starmark { get; set; } = 0;
///
/// 纯粹结晶魔法抗性
///
public double PurityNatural { get; set; } = 0;
///
/// 纯现代结晶魔法抗性
///
public double PurityContemporary { get; set; } = 0;
///
/// 光魔法抗性
///
public double Bright { get; set; } = 0;
///
/// 影魔法抗性
///
public double Shadow { get; set; } = 0;
///
/// 元素魔法抗性
///
public double Element { get; set; } = 0;
///
/// 紫宛魔法抗性
///
public double Fleabane { get; set; } = 0;
///
/// 时空魔法抗性
///
public double Particle { get; set; } = 0;
///
/// 平均魔法抗性
///
public double Avg
{
get
{
double mdf = Calculation.Round4Digits((None + Starmark + PurityNatural + PurityContemporary + Bright + Shadow + Element + Fleabane + Particle) / 9) * 100;
if (Calculation.IsApproximatelyZero(mdf)) mdf = 0;
return mdf;
}
}
///
/// 获取或设置抗性值
///
///
///
public double this[MagicType type]
{
get
{
return type switch
{
MagicType.Starmark => Starmark,
MagicType.PurityNatural => PurityNatural,
MagicType.PurityContemporary => PurityContemporary,
MagicType.Bright => Bright,
MagicType.Shadow => Shadow,
MagicType.Element => Element,
MagicType.Fleabane => Fleabane,
MagicType.Particle => Particle,
_ => None
};
}
set
{
switch (type)
{
case MagicType.Starmark:
Starmark = value;
break;
case MagicType.PurityNatural:
PurityNatural = value;
break;
case MagicType.PurityContemporary:
PurityContemporary = value;
break;
case MagicType.Bright:
Bright = value;
break;
case MagicType.Shadow:
Shadow = value;
break;
case MagicType.Element:
Element = value;
break;
case MagicType.Fleabane:
Fleabane = value;
break;
case MagicType.Particle:
Particle = value;
break;
default:
None = value;
break;
}
}
}
///
/// 对所有抗性赋值
///
///
///
public void SetAllValue(double value, bool assignment = true)
{
if (assignment)
{
None = value;
Particle = value;
Fleabane = value;
Element = value;
Shadow = value;
Bright = value;
PurityContemporary = value;
PurityNatural = value;
Starmark = value;
}
else
{
None += value;
Particle += value;
Fleabane += value;
Element += value;
Shadow += value;
Bright += value;
PurityContemporary += value;
PurityNatural += value;
Starmark += value;
}
}
///
/// 增加所有抗性,传入负数来减少
///
///
public void AddAllValue(double value)
{
None += value;
Particle += value;
Fleabane += value;
Element += value;
Shadow += value;
Bright += value;
PurityContemporary += value;
PurityNatural += value;
Starmark += value;
}
///
/// 复制一个魔法抗性对象
///
///
public MagicResistance Copy()
{
return new()
{
None = None,
Starmark = Starmark,
PurityNatural = PurityNatural,
PurityContemporary = PurityContemporary,
Bright = Bright,
Shadow = Shadow,
Element = Element,
Fleabane = Fleabane,
Particle = Particle
};
}
}
}