Project_WL/Assets/Script/Table/PC/table_breakinglimit.cs

122 lines
4.0 KiB
C#

using CodeStage.AntiCheat.ObscuredTypes;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
[Serializable]
public class BreakingLimitTableData : TableDataBase
{
// ObscuredInt 적용
ObscuredInt _LimitLv;
public int n_LimitLv
{
get { return _LimitLv; }
set { _LimitLv = value; _LimitLv.RandomizeCryptoKey(); }
} // 초월(한계 돌파) 달성 레벨
ObscuredInt _RequireTotalStat;
public int n_RequireTotalStat
{
get { return _RequireTotalStat; }
set { _RequireTotalStat = value; _RequireTotalStat.RandomizeCryptoKey(); }
} // 초월에 필요한 스탯 총 요구량
ObscuredInt _RequireLevel;
public int n_RequireLevel
{
get { return _RequireLevel; }
set { _RequireLevel = value; _RequireLevel.RandomizeCryptoKey(); }
} // 초월에 필요한 레벨 요구량
ObscuredInt _MaxAbilityPoint;
public int n_MaxAbilityPoint
{
get { return _MaxAbilityPoint; }
set { _MaxAbilityPoint = value; _MaxAbilityPoint.RandomizeCryptoKey(); }
} // 최대 특성 보유량
ObscuredInt _Equip_Upgrade_Limit;
public int n_Equip_Upgrade_Limit
{
get { return _Equip_Upgrade_Limit; }
set { _Equip_Upgrade_Limit = value; _Equip_Upgrade_Limit.RandomizeCryptoKey(); }
} // 장비 강화 최대 레벨
ObscuredInt _limitSlotMagic;
public int n_limitSlotMagic
{
get { return _limitSlotMagic; }
set { _limitSlotMagic = value; _limitSlotMagic.RandomizeCryptoKey(); }
} // 최대 마법부여 슬롯 (슬롯 개방 레벨은 n_LimitLv을 참조)
// ObscuredFloat 적용
ObscuredFloat _Monster_DMG_Multiplier;
public float f_Monster_DMG_Multiplier
{
get { return _Monster_DMG_Multiplier; }
set { _Monster_DMG_Multiplier = value; _Monster_DMG_Multiplier.RandomizeCryptoKey(); }
} // 일반 몬스터 피해 증가량
ObscuredFloat _Boss_DMG_Multiplier;
public float f_Boss_DMG_Multiplier
{
get { return _Boss_DMG_Multiplier; }
set { _Boss_DMG_Multiplier = value; _Boss_DMG_Multiplier.RandomizeCryptoKey(); }
} // 보스 피해량 증가량
ObscuredFloat _ALL_STAT_Multiplier;
public float f_ALL_STAT_Multiplier
{
get { return _ALL_STAT_Multiplier; }
set { _ALL_STAT_Multiplier = value; _ALL_STAT_Multiplier.RandomizeCryptoKey(); }
} // 모든 스탯 증가량
public float Get_StatValue(eStat stat)
{
switch (stat)
{
case eStat.Monster_DMG_Multiplier: return f_Monster_DMG_Multiplier;
case eStat.BOSS_DMG_Multiplier: return f_Monster_DMG_Multiplier;
case eStat.ALL_STAT_Multiplier: return f_ALL_STAT_Multiplier;
}
return 0f;
}
}
public class table_breakinglimit : table_missionbase
{
public static table_breakinglimit Ins;
List<BreakingLimitTableData> tableDatas;
Dictionary<int, BreakingLimitTableData> dic_Data = new Dictionary<int, BreakingLimitTableData>();
// 슬롯, 레벨
Dictionary<int, int> dic_SlotOpenData = new Dictionary<int, int>();
protected override void Awake()
{
base.Awake();
Ins = this;
}
protected override void Start()
{
tableDatas = JsonConvert.DeserializeObject<List<BreakingLimitTableData>>(json_last);
for (int i = 0; i < Get_DataList().Count; i++)
{
var temp = Get_DataList()[i];
dic_Data.Add(temp.n_LimitLv, temp);
if (temp.n_limitSlotMagic > 0)
{
if (!dic_SlotOpenData.ContainsKey(temp.n_limitSlotMagic))
dic_SlotOpenData.Add(temp.n_limitSlotMagic, temp.n_LimitLv);
}
}
base.Start();
}
public BreakingLimitTableData Get_Data_orNull(int lv) { return dic_Data.ContainsKey(lv) ? dic_Data[lv] : null; }
public List<BreakingLimitTableData> Get_DataList() { return tableDatas; }
public int Get_SlotOpenLv(int slot) { return dic_SlotOpenData[slot]; }
}