OldBlueWater/BlueWater/Assets/02.Scripts/Ai/Human/Unit/PirateUnitStat.cs

91 lines
3.1 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
[Serializable]
2023-09-12 14:46:57 +00:00
public class PirateUnitStat : IIdx
{
#region Property and variable
[field: Tooltip("고유 인덱스")]
[field: SerializeField] public string Idx { get; set; }
[field: Tooltip("선장의 인덱스")]
[field: SerializeField] public string CaptainStatIdx { get; set; }
[field: Tooltip("선원의 인덱스")]
[field: SerializeField] public string SailorStatIdx { get; set; }
[field: Tooltip("부대의 이름 또는 선장의 이름")]
[field: SerializeField] public string UnitName { get; set; }
[field: Tooltip("선원의 수")]
[field: Range(0, GlobalValue.ONE_UNIT_CAPACITY - 1)]
[field: SerializeField] public int SailorCount { get; set; }
2023-08-30 02:10:16 +00:00
2023-09-04 07:31:04 +00:00
[field: EnumToggleButtons]
[field: SerializeField] public EAttackerType AttackerType { get; set; }
2023-08-30 02:10:16 +00:00
2023-09-04 07:31:04 +00:00
[field: EnumToggleButtons]
[field: SerializeField] public EOffenseType OffenseType { get; set; }
2023-08-30 02:10:16 +00:00
2023-09-04 07:31:04 +00:00
[field: EnumToggleButtons]
[field: SerializeField] public EDefenseType DefenseType { get; set; }
[field: Tooltip("부대 병력 리스트")]
2023-09-13 07:05:21 +00:00
[field: SerializeField] public List<PirateAi> PirateAiList { get; set; }
#endregion
#region Constructor
2023-09-12 14:46:57 +00:00
public PirateUnitStat()
{
Idx = null;
CaptainStatIdx = null;
SailorStatIdx = null;
UnitName = null;
SailorCount = 0;
2023-09-04 07:31:04 +00:00
AttackerType = EAttackerType.NONE;
OffenseType = EOffenseType.NONE;
DefenseType = EDefenseType.NONE;
2023-09-13 07:05:21 +00:00
PirateAiList = new List<PirateAi>(GlobalValue.ONE_UNIT_CAPACITY);
}
2023-09-12 14:46:57 +00:00
public PirateUnitStat(string idx, string captainIdx, string sailorIdx, string unitName,
2023-09-13 07:05:21 +00:00
int sailorCount, EAttackerType attackerType, EOffenseType offenseType, EDefenseType defenseType, List<PirateAi> pirateAiList)
{
Idx = idx;
CaptainStatIdx = captainIdx;
SailorStatIdx = sailorIdx;
UnitName = unitName;
SailorCount = sailorCount;
OffenseType = offenseType;
DefenseType = defenseType;
2023-09-13 07:05:21 +00:00
PirateAiList = pirateAiList;
2023-09-04 07:31:04 +00:00
if (AttackerType == EAttackerType.NONE) return;
AttackerType = attackerType;
}
2023-09-12 14:46:57 +00:00
public PirateUnitStat(PirateUnitStat pirateUnitStat)
{
2023-09-12 14:46:57 +00:00
Idx = pirateUnitStat.Idx;
CaptainStatIdx = pirateUnitStat.CaptainStatIdx;
SailorStatIdx = pirateUnitStat.SailorStatIdx;
UnitName = pirateUnitStat.UnitName;
SailorCount = pirateUnitStat.SailorCount;
AttackerType = pirateUnitStat.AttackerType;
OffenseType = pirateUnitStat.OffenseType;
DefenseType = pirateUnitStat.DefenseType;
2023-09-13 07:05:21 +00:00
PirateAiList = pirateUnitStat.PirateAiList;
2023-09-04 07:31:04 +00:00
}
#endregion
}
}