using System; using System.Diagnostics; using System.Reflection; [Serializable] public class UnitInfo { long _id; public long id { get { return _id; } } string _name; public string name { get { return _name; } } int _maxHp; public int maxHp { get { return (int)(_maxHp * unitBonus.levelBonus); } } public int hp; int _attack; public int attack { get { return (int)(_attack * unitBonus.levelBonus); } } float _attackSpeed; public float attackSpeed { get { return _attackSpeed + ((float)(unitBonus.level - 1) * 0.5f); } } int _defense; public int defense { get { return (int)(_defense * unitBonus.levelBonus); } } float _moveSpeed; public float moveSpeed { get { return _moveSpeed + ((float)(unitBonus.level - 1) * 0.5f); } } int[] _buy; public int[] buy { get { return _buy; } } UnitBonus unitBonus; public DeckUnitInfo deckUnitInfo; public void UnitSet(UnitData ud) { _id = ud.index; _name = ud.name; _maxHp = ud.hp; _attack = ud.attack; _attackSpeed = ud.attack_speed; _defense = ud.defense; _moveSpeed = ud.move_speed; _buy = ud.buy.ToArray(); } public void DeckUnitInfoSet() { foreach (var item in Statics.deckUnit) { if (item.Value.unit_data_id == _id) { this.deckUnitInfo = item.Value; } } if (this.deckUnitInfo == null) { UnityEngine.Debug.LogError("Not Data : " + _id); return; } int index = -1; if (this.deckUnitInfo.equip0_id != 0)//¹«±â { //ÀåÂø¿¡ ´ëÇÑ ½Ã½ºÅÛ ÀÛ¼º index = Statics.equipment.FindIndex(n => n.id == deckUnitInfo.equip0_id); Equipment eq = Statics.equipment[index]; EquipmentData eqd = Statics.excelDatas.equipmentData[eq.equipment_data_id]; switch (eq.rand_stats) { case 1: //°ø°Ý·Â _attack += eqd.stats1; break; case 2: //¹æ¾î°üÅë·Â break; case 3: //Ä¡¸íŸ´ë¹ÌÁö break; } } if (this.deckUnitInfo.equip1_id != 0)//°©¿Ê { //ÀåÂø¿¡ ´ëÇÑ ½Ã½ºÅÛ ÀÛ¼º index = Statics.equipment.FindIndex(n => n.id == deckUnitInfo.equip1_id); Equipment eq = Statics.equipment[index]; EquipmentData eqd = Statics.excelDatas.equipmentData[eq.equipment_data_id]; switch (eq.rand_stats) { case 1: //¹æ¾î·Â _defense += eqd.stats1; break; case 2: //ü·Â _maxHp += eqd.stats2; break; case 3: //µ¥¹ÌÁö°¨¼Ò break; } } if (this.deckUnitInfo.equip2_id != 0)//Àå°© { //ÀåÂø¿¡ ´ëÇÑ ½Ã½ºÅÛ ÀÛ¼º index = Statics.equipment.FindIndex(n => n.id == deckUnitInfo.equip2_id); Equipment eq = Statics.equipment[index]; EquipmentData eqd = Statics.excelDatas.equipmentData[eq.equipment_data_id]; switch (eq.rand_stats) { case 1: //À̵¿¼Óµµ _moveSpeed += eqd.stats1; break; case 2: //°ø°Ý¼Óµµ _attackSpeed += eqd.stats2; break; case 3: //°ø°Ý·Â _attack += eqd.stats3; break; } } if (this.deckUnitInfo.equip3_id != 0)//Åõ±¸ { //ÀåÂø¿¡ ´ëÇÑ ½Ã½ºÅÛ ÀÛ¼º index = Statics.equipment.FindIndex(n => n.id == deckUnitInfo.equip3_id); Equipment eq = Statics.equipment[index]; EquipmentData eqd = Statics.excelDatas.equipmentData[eq.equipment_data_id]; switch (eq.rand_stats) { case 1: //°ø°Ý·Â _attack += eqd.stats1; break; case 2: //¹æ¾î°üÅë·Â break; case 3: //ü·Â _maxHp += eqd.stats3; break; } } if (this.deckUnitInfo.equip4_id != 0)//¹æÆÐ { //ÀåÂø¿¡ ´ëÇÑ ½Ã½ºÅÛ ÀÛ¼º index = Statics.equipment.FindIndex(n => n.id == deckUnitInfo.equip4_id); Equipment eq = Statics.equipment[index]; EquipmentData eqd = Statics.excelDatas.equipmentData[eq.equipment_data_id]; switch (eq.rand_stats) { case 1: //¹æ¾î·Â _defense += eqd.stats1; break; case 2: //´ë¹ÌÁö°¨¼Ò break; case 3: //ü·Â _maxHp += eqd.stats3; break; } } if (this.deckUnitInfo.equip5_id != 0)//¹ÝÁö { //ÀåÂø¿¡ ´ëÇÑ ½Ã½ºÅÛ ÀÛ¼º index = Statics.equipment.FindIndex(n => n.id == deckUnitInfo.equip5_id); Equipment eq = Statics.equipment[index]; EquipmentData eqd = Statics.excelDatas.equipmentData[eq.equipment_data_id]; switch (eq.rand_stats) { case 1: //Ä¡¸íŸȮ·ü break; case 2: //À̵¿¼Óµµ _moveSpeed += eqd.stats2; break; case 3: //°ø°Ý¼Óµµ _attackSpeed += eqd.stats3; break; } } } public void UnitBonusSet(UnitBonus unitBonus) { this.unitBonus = unitBonus; this.hp = maxHp; } } public class UnitBonus { //½Ã½ºÅÛ¿¡¼­ °­È­µÇ´Â µ¥ÀÌÅÍ //1 > 1.12 > 1.272 > 1.439 > 1.643 int _level; public int level { get { return _level; } } public float levelBonus { get { switch (_level) { case 1: return 1.0f; case 2: return 1.12f; case 3: return 1.272f; case 4: return 1.439f; case 5: return 1.643f; default: return 0.0f; } } } //ÀåÂø Àåºñ Á¤º¸ int[] _equipment; public int[] equipment { get { return _equipment; } } public UnitBonus(int level, int[] equipment, int leaderType, int leaderbonus) { this._level = level; this._equipment = equipment; } }