OldBlueWater/BlueWater/Assets/02.Scripts/Ai/AiStat.cs

123 lines
4.1 KiB
C#
Raw Normal View History

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; }
2023-08-08 07:53:35 +00:00
[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
/// <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
}
}