thewar_client/Client/Assets/1_Script/Info/UnitInfo.cs

220 lines
6.5 KiB
C#

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_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;
}
}