using System.Collections; using System.Collections.Generic; using UnityEngine; using UniRx; public partial class CharacterModel : BaseModel { ReactiveCollection mDatas = new ReactiveCollection(new List(10)); public IReadOnlyCollection Datas => mDatas; public class Data { public enum eSTAT { _START_, _BASE_START_, ATK, //공격력 DEF, //방어력 HP, //체력 CRI_RATE, //치명타 확률 CRI, //치명타 피해량 SPD, //속도 _BASE_END_, _SUPPROT_START_, SKILL_DMG, //스킬 피해량 CC_REGIST, //상태이상 저항 CC_HIT, //상태이상 적중 FINAL_DMG_UP, //최종 피해량 증가 FINAL_DMG_DOWN, //받는 피해 경감 FIX_DMG_UP, //고정 피해 추가 FIX_DMG_DOWN, //고정 피해 방어 CRI_REGIST, //치명타 저항 HP_RECOVERY, //생명력 재생량 HP_RECOVERY_UP, //회복 효과 증가 _SUPPORT_END_, _SPECIAL_START_, ATTRIBUTE, //속성 JOB, //직업 SEX, //성별 AGGRO, //어그로 _SPECIAL_END_, _END_, } public int Level { get; set; } = 1; public string Name { get; set; } = string.Empty; public int SkillID { get; set; } = 0; Dictionary mDicStat = null; public Data() { mDicStat = new Dictionary((int)eSTAT._END_); } public void Initialize() { #region [TEST] for (var e = eSTAT._START_; e <= eSTAT._END_; ++ e) { if(e <= eSTAT._BASE_END_) { mDicStat.TryAdd(e, Random.Range(100, 150)); } else if(e <= eSTAT._SUPPORT_END_) { mDicStat.TryAdd(e, Random.Range(1, 10)); } else if(e <= eSTAT._SPECIAL_END_) { mDicStat.TryAdd(e, Random.Range(1, 5)); } } #endregion[TEST] } public int GetStat(eSTAT e) { mDicStat.TryGetValue(e, out var stat); return stat; } } }