using System; using Sirenix.OdinInspector; using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { [Serializable] public class AiStat { #region Property and variable [field: Tooltip("고유 인덱스")] [field: SerializeField] public string Idx { get; set; } [field: Tooltip("캐릭터 모델 인덱스")] [field: SerializeField] public string ViewIdx { get; set; } [field: Tooltip("캐릭터 최대 체력")] [field: SerializeField] public float MaxHp { get; set; } [field: Tooltip("캐릭터 현재 체력")] [field: SerializeField] public float CurrentHp { get; set; } [field: Tooltip("공격력")] [field: SerializeField] public float Atk { get; set; } [field: Tooltip("방어력")] [field: SerializeField] public float Def { get; set; } [field: Tooltip("이동속도")] [field: SerializeField] public float MoveSpd { get; set; } [field: Tooltip("공격속도(다음 공격 주기)")] [field: SerializeField] public float AtkCooldown { get; set; } [field: Tooltip("공격 사거리")] [field: SerializeField] public float AtkRange { get; set; } [field: Tooltip("방패 캐릭터를 공격했을 때, 방패 관통률")] [field: Range(0, 100)] [field: SerializeField] public int ShieldPenetrationRate { get; set; } [field: Tooltip("공격을 피할 수 있는 회피율")] [field: Range(0, 100)] [field: SerializeField] public int AvoidanceRate { get; set; } [field: Tooltip("캐릭터의 방패 사용 유무")] [field: SerializeField] public bool UsingShield { get; set; } [field: Tooltip("방패 캐릭터가 관통 당할 확률을 줄여주는 관통 저항률")] [field: ShowIf("@UsingShield == true")] [field: Range(0, 100)] [field: SerializeField] public int PenetrationResistivity { get; set; } #endregion #region Constructor /// /// 기본 생성자 /// public AiStat() { Idx = null; ViewIdx = null; MaxHp = 0f; CurrentHp = 0f; Atk = 0f; Def = 0f; MoveSpd = 0f; AtkCooldown = 0f; AtkRange = 0f; ShieldPenetrationRate = 0; AvoidanceRate = 0; UsingShield = false; PenetrationResistivity = 0; } /// /// 일반 생성자 /// public AiStat(string idx, string viewIdx, float maxHp, float currentHp, float atk, float def, float moveSpd, float atkCooldown, float atkRange, int shieldPenetrationRate, int avoidanceRate, bool usingShield, int penetrationResistivity) { Idx = idx; ViewIdx = viewIdx; MaxHp = maxHp; CurrentHp = currentHp; Atk = atk; Def = def; MoveSpd = moveSpd; AtkCooldown = atkCooldown; AtkRange = atkRange; ShieldPenetrationRate = shieldPenetrationRate; AvoidanceRate = avoidanceRate; UsingShield = usingShield; PenetrationResistivity = penetrationResistivity; } /// /// 복사 생성자 /// public AiStat(AiStat aiStat) { Idx = aiStat.Idx; ViewIdx = aiStat.ViewIdx; MaxHp = aiStat.MaxHp; CurrentHp = aiStat.CurrentHp; Atk = aiStat.Atk; Def = aiStat.Def; MoveSpd = aiStat.MoveSpd; AtkCooldown = aiStat.AtkCooldown; AtkRange = aiStat.AtkRange; ShieldPenetrationRate = aiStat.ShieldPenetrationRate; AvoidanceRate = aiStat.AvoidanceRate; UsingShield = aiStat.UsingShield; PenetrationResistivity = aiStat.PenetrationResistivity; } #endregion } }