IdleGirl/Assets/2_Codes/Model/Character/CharacterModel.cs

89 lines
2.7 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UniRx;
public partial class CharacterModel : BaseModel
{
ReactiveCollection<Data> mDatas = new ReactiveCollection<Data>(new List<Data>(10));
public IReadOnlyCollection<Data> 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<eSTAT, int> mDicStat = null;
public Data()
{
mDicStat = new Dictionary<eSTAT, int>((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;
}
}
}