2023-08-02 07:45:11 +00:00
|
|
|
using System;
|
2023-08-21 18:08:11 +00:00
|
|
|
using Sirenix.OdinInspector;
|
2023-08-02 07:45:11 +00:00
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
// ReSharper disable once CheckNamespace
|
2023-08-03 05:49:05 +00:00
|
|
|
namespace BlueWaterProject
|
2023-08-02 07:45:11 +00:00
|
|
|
{
|
|
|
|
[Serializable]
|
|
|
|
public class AiStat
|
|
|
|
{
|
2023-08-28 19:52:23 +00:00
|
|
|
#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; }
|
2023-08-02 07:45:11 +00:00
|
|
|
|
2023-08-28 19:52:23 +00:00
|
|
|
[field: Tooltip("캐릭터 현재 체력")]
|
|
|
|
[field: SerializeField] public float CurrentHp { get; set; }
|
2023-08-02 07:45:11 +00:00
|
|
|
|
2023-08-28 19:52:23 +00:00
|
|
|
[field: Tooltip("공격력")]
|
|
|
|
[field: SerializeField] public float Atk { get; set; }
|
2023-08-02 07:45:11 +00:00
|
|
|
|
2023-08-28 19:52:23 +00:00
|
|
|
[field: Tooltip("방어력")]
|
|
|
|
[field: SerializeField] public float Def { get; set; }
|
2023-08-02 07:45:11 +00:00
|
|
|
|
2023-08-28 19:52:23 +00:00
|
|
|
[field: Tooltip("이동속도")]
|
|
|
|
[field: SerializeField] public float MoveSpd { get; set; }
|
2023-08-02 07:45:11 +00:00
|
|
|
|
2023-08-28 19:52:23 +00:00
|
|
|
[field: Tooltip("공격속도(다음 공격 주기)")]
|
|
|
|
[field: SerializeField] public float AtkCooldown { get; set; }
|
2023-08-08 07:53:35 +00:00
|
|
|
|
2023-08-28 19:52:23 +00:00
|
|
|
[field: Tooltip("공격 사거리")]
|
|
|
|
[field: SerializeField] public float AtkRange { get; set; }
|
2023-08-21 18:08:11 +00:00
|
|
|
|
2023-08-28 19:52:23 +00:00
|
|
|
[field: Tooltip("방패 캐릭터를 공격했을 때, 방패 관통률")]
|
|
|
|
[field: Range(0, 100)]
|
|
|
|
[field: SerializeField] public int ShieldPenetrationRate { get; set; }
|
2023-08-21 18:08:11 +00:00
|
|
|
|
2023-08-28 19:52:23 +00:00
|
|
|
[field: Tooltip("공격을 피할 수 있는 회피율")]
|
|
|
|
[field: Range(0, 100)]
|
|
|
|
[field: SerializeField] public int AvoidanceRate { get; set; }
|
2023-08-02 07:45:11 +00:00
|
|
|
|
2023-08-28 19:52:23 +00:00
|
|
|
[field: Tooltip("캐릭터의 방패 사용 유무")]
|
|
|
|
[field: SerializeField] public bool UsingShield { get; set; }
|
2023-08-02 07:45:11 +00:00
|
|
|
|
2023-08-28 19:52:23 +00:00
|
|
|
[field: Tooltip("방패 캐릭터가 관통 당할 확률을 줄여주는 관통 저항률")]
|
|
|
|
[field: ShowIf("@UsingShield == true")]
|
|
|
|
[field: Range(0, 100)]
|
|
|
|
[field: SerializeField] public int PenetrationResistivity { get; set; }
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region Constructor
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 기본 생성자
|
|
|
|
/// </summary>
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 일반 생성자
|
|
|
|
/// </summary>
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 복사 생성자
|
|
|
|
/// </summary>
|
|
|
|
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
|
2023-08-02 07:45:11 +00:00
|
|
|
}
|
|
|
|
}
|