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

274 lines
8.9 KiB
C#
Raw Permalink Normal View History

2024-12-18 23:42:27 +00:00
using CodeStage.AntiCheat.ObscuredTypes;
2024-12-15 01:39:39 +00:00
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using UnityEngine;
2024-12-15 01:39:39 +00:00
public enum eBattleType
{
All, Shield, OneHand, Bow, Staff, TwoHand, DualWeapon,
}
[Serializable]
public class ClassConfigTableData : TableDataBase
{
2024-12-18 23:42:27 +00:00
// ObscuredInt 적용
ObscuredInt _ClassID;
public int n_ClassID
{
get { return _ClassID; }
set { _ClassID = value; _ClassID.RandomizeCryptoKey(); }
} // 영웅의 직업을 분류하기 위한 고유 ID
ObscuredInt _Tier;
public int n_Tier
{
get { return _Tier; }
set { _Tier = value; _Tier.RandomizeCryptoKey(); }
} // Tier
public string s_AnimationController { get; set; }
public string s_JobIcon { get; set; }
public string s_WeaponLHPrefab { get; set; }
public int n_WeaponLHIndex;
2024-12-18 23:42:27 +00:00
public string s_WeaponRHPrefab { get; set; }
public int n_WeaponRHIndex;
2024-12-18 23:42:27 +00:00
public eBattleType e_BattleType { get; set; }
public float f_Scale;
2024-12-18 23:42:27 +00:00
ObscuredFloat _AttackRange;
public float f_AttackRange
{
get { return _AttackRange; }
set { _AttackRange = value; _AttackRange.RandomizeCryptoKey(); }
} // 공격 범위
2025-04-28 04:45:07 +00:00
ObscuredFloat _AttackSPD;
public float f_AttackSPD
{
get { return _AttackSPD; }
set { _AttackSPD = value; _AttackSPD.RandomizeCryptoKey(); }
} // 공격 범위
ObscuredFloat _MoveSPD;
public float f_MoveSPD
{
get { return _MoveSPD; }
set { _MoveSPD = value; _MoveSPD.RandomizeCryptoKey(); }
} // 공격 범위
2024-12-18 23:42:27 +00:00
public eMainStatType e_MainStatType { get; set; } // 주스텟 타입
// ObscuredInt 적용
ObscuredInt _DefaultStr;
public int n_DefaultStr
{
get { return _DefaultStr; }
set { _DefaultStr = value; _DefaultStr.RandomizeCryptoKey(); }
} // 기본 보유 힘 수치
ObscuredInt _DefaultDex;
public int n_DefaultDex
{
get { return _DefaultDex; }
set { _DefaultDex = value; _DefaultDex.RandomizeCryptoKey(); }
} // 기본 보유 민첩 수치
ObscuredInt _DefaultInt;
public int n_DefaultInt
{
get { return _DefaultInt; }
set { _DefaultInt = value; _DefaultInt.RandomizeCryptoKey(); }
} // 기본 보유 지능 수치
ObscuredInt _DefaultLuk;
public int n_DefaultLuk
{
get { return _DefaultLuk; }
set { _DefaultLuk = value; _DefaultLuk.RandomizeCryptoKey(); }
} // 기본 보유 행운 수치
ObscuredInt _DefaultHP;
public int n_DefaultHP
{
get { return _DefaultHP; }
set { _DefaultHP = value; _DefaultHP.RandomizeCryptoKey(); }
} // 기본 보유 HP 수치
ObscuredInt _DefaultMP;
public int n_DefaultMP
{
get { return _DefaultMP; }
set { _DefaultMP = value; _DefaultMP.RandomizeCryptoKey(); }
} // 기본 보유 MP 수치
ObscuredInt _ExtraSkill;
public int n_ExtraSkill
{
get { return _ExtraSkill; }
set { _ExtraSkill = value; _ExtraSkill.RandomizeCryptoKey(); }
} // 고유 패시브 스킬 ID
ObscuredInt _AcquiredSkill1;
public int n_AcquiredSkill1
{
get { return _AcquiredSkill1; }
set { _AcquiredSkill1 = value; _AcquiredSkill1.RandomizeCryptoKey(); }
} // 개방 시 얻게 될 스킬 ID1
ObscuredInt _AcquiredSkill2;
public int n_AcquiredSkill2
{
get { return _AcquiredSkill2; }
set { _AcquiredSkill2 = value; _AcquiredSkill2.RandomizeCryptoKey(); }
} // 개방 시 얻게 될 스킬 ID2
ObscuredInt _AcquiredSkill3;
public int n_AcquiredSkill3
{
get { return _AcquiredSkill3; }
set { _AcquiredSkill3 = value; _AcquiredSkill3.RandomizeCryptoKey(); }
} // 개방 시 얻게 될 스킬 ID3
2024-12-15 01:39:39 +00:00
public string Get_JobName() { return table_localtext.Ins.Get_Text(n_ClassID); }
public eMainStatType Get_MainStat()
{
switch (e_MainStatType)
{
case eMainStatType.STR:
case eMainStatType.STR_DEX:
case eMainStatType.STR_INT:
return eMainStatType.STR;
case eMainStatType.DEX:
case eMainStatType.DEX_STR:
case eMainStatType.DEX_INT:
return eMainStatType.DEX;
case eMainStatType.INT:
case eMainStatType.INT_STR:
case eMainStatType.INT_DEX:
return eMainStatType.INT;
default:
return eMainStatType.LUCK;
}
}
public eStat Get_MainStatToStat()
{
switch (e_MainStatType)
{
case eMainStatType.STR:
case eMainStatType.STR_DEX:
case eMainStatType.STR_INT:
return eStat.STR;
case eMainStatType.DEX:
case eMainStatType.DEX_STR:
case eMainStatType.DEX_INT:
return eStat.DEX;
case eMainStatType.INT:
case eMainStatType.INT_STR:
case eMainStatType.INT_DEX:
return eStat.INT;
default:
return eStat.LUK;
}
}
public int Get_DefaultMainStatValue()
{
switch (Get_MainStatToStat())
{
case eStat.STR: return n_DefaultStr;
case eStat.DEX: return n_DefaultDex;
case eStat.INT: return n_DefaultInt;
case eStat.LUK: return n_DefaultLuk;
}
return 0;
}
2025-07-16 07:17:44 +00:00
public Sprite Get_MainStatIcon(int index)
{
switch (e_MainStatType)
{
case eMainStatType.STR: return index == 0 ? UIAtlasMgr.Ins.Get_MainStatSprite(eStat.STR) : null;
case eMainStatType.STR_DEX: return UIAtlasMgr.Ins.Get_MainStatSprite(index == 0 ? eStat.STR : eStat.DEX);
case eMainStatType.STR_INT: return UIAtlasMgr.Ins.Get_MainStatSprite(index == 0 ? eStat.STR : eStat.INT);
case eMainStatType.DEX: return index == 0 ? UIAtlasMgr.Ins.Get_MainStatSprite(eStat.DEX) : null;
case eMainStatType.DEX_STR: return UIAtlasMgr.Ins.Get_MainStatSprite(index == 0 ? eStat.DEX : eStat.STR);
case eMainStatType.DEX_INT: return UIAtlasMgr.Ins.Get_MainStatSprite(index == 0 ? eStat.DEX : eStat.INT);
case eMainStatType.INT: return index == 0 ? UIAtlasMgr.Ins.Get_MainStatSprite(eStat.INT) : null;
case eMainStatType.INT_STR: return UIAtlasMgr.Ins.Get_MainStatSprite(index == 0 ? eStat.INT : eStat.STR);
case eMainStatType.INT_DEX: return UIAtlasMgr.Ins.Get_MainStatSprite(index == 0 ? eStat.INT : eStat.DEX);
2025-07-23 06:26:02 +00:00
case eMainStatType.LUCK: return index == 0 ? UIAtlasMgr.Ins.Get_MainStatSprite(eStat.LUK) : null;
2025-07-16 07:17:44 +00:00
}
return null;
}
2024-12-15 01:39:39 +00:00
}
public class table_classconfig : table_missionbase
{
public static table_classconfig Ins;
List<ClassConfigTableData> tableDatas;
Dictionary<int, ClassConfigTableData> dic_Data = new Dictionary<int, ClassConfigTableData>();
protected override void Awake()
{
base.Awake();
Ins = this;
}
protected override void Start()
{
tableDatas = JsonConvert.DeserializeObject<List<ClassConfigTableData>>(json_last);
for (int i = 0; i < Get_DataList().Count; i++)
{
var temp = Get_DataList()[i];
dic_Data.Add(temp.n_ClassID, temp);
}
base.Start();
}
public ClassConfigTableData Get_Data_orNull(int id) { return dic_Data[id]; }
public List<ClassConfigTableData> Get_DataList() { return tableDatas; }
public int Get_PureStat(eStat stat, ServerData sdata)
{
var rtnVale = 0;
for (int i = 0; i < sdata.PC.Obtain.Count; i++)
{
var classData = Get_Data_orNull(sdata.PC.Obtain[i]);
switch (stat)
{
case eStat.STR: rtnVale += classData.n_DefaultStr; break;
case eStat.DEX: rtnVale += classData.n_DefaultDex; break;
case eStat.INT: rtnVale += classData.n_DefaultInt; break;
case eStat.LUK: rtnVale += classData.n_DefaultLuk; break;
}
}
rtnVale += sdata.PC.Get_Stat(stat);
return rtnVale;
}
public int Get_TotalPureStat(ServerData sdata)
{
return Get_PureStat(eStat.STR, sdata) + Get_PureStat(eStat.DEX, sdata) + Get_PureStat(eStat.INT, sdata) + Get_PureStat(eStat.LUK, sdata);
}
2025-07-16 07:17:44 +00:00
public int Get_TotalStat_byClass(eStat stat)
{
var sdata = ServerInfo.Ins.m_ServerData;
var lst = Get_DataList();
int rtnval = 0;
for (int i = 0; i < lst.Count; i++)
{
if (sdata.PC.IsObtainPC(lst[i].n_ClassID))
{
switch (stat)
{
case eStat.STR: rtnval += lst[i].n_DefaultStr; break;
case eStat.DEX: rtnval += lst[i].n_DefaultDex; break;
case eStat.INT: rtnval += lst[i].n_DefaultInt; break;
case eStat.LUK: rtnval += lst[i].n_DefaultLuk; break;
}
}
}
return rtnval;
}
2024-12-15 01:39:39 +00:00
}