214 lines
6.2 KiB
C#
214 lines
6.2 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.itemManager.box.deckUnitInfo)
|
|
{
|
|
if (item.unit_data_id == _id)
|
|
{
|
|
this.deckUnitInfo = item;
|
|
}
|
|
}
|
|
if (this.deckUnitInfo == null)
|
|
{
|
|
UnityEngine.Debug.LogError("Not Data : " + _id);
|
|
return;
|
|
}
|
|
|
|
Equipment index = null;
|
|
|
|
if (this.deckUnitInfo.equip0_id != 0)//무기
|
|
{
|
|
//장착에 대한 시스템 작성
|
|
index = Statics.itemManager.box.FindEquipment(deckUnitInfo.equip0_id);
|
|
EquipmentData eqd = Statics.excelDatas.equipmentData[index.equipment_data_id];
|
|
switch (index.rand_stats)
|
|
{
|
|
case 1: //공격력
|
|
_attack += eqd.stats1;
|
|
break;
|
|
case 2: //방어관통력
|
|
break;
|
|
case 3: //치명타대미지
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (this.deckUnitInfo.equip1_id != 0)//갑옷
|
|
{
|
|
//장착에 대한 시스템 작성
|
|
index = Statics.itemManager.box.FindEquipment(deckUnitInfo.equip1_id);
|
|
EquipmentData eqd = Statics.excelDatas.equipmentData[index.equipment_data_id];
|
|
switch (index.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.itemManager.box.FindEquipment(deckUnitInfo.equip2_id);
|
|
EquipmentData eqd = Statics.excelDatas.equipmentData[index.equipment_data_id];
|
|
switch (index.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.itemManager.box.FindEquipment(deckUnitInfo.equip3_id);
|
|
EquipmentData eqd = Statics.excelDatas.equipmentData[index.equipment_data_id];
|
|
switch (index.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.itemManager.box.FindEquipment(deckUnitInfo.equip4_id);
|
|
EquipmentData eqd = Statics.excelDatas.equipmentData[index.equipment_data_id];
|
|
switch (index.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.itemManager.box.FindEquipment(deckUnitInfo.equip5_id);
|
|
EquipmentData eqd = Statics.excelDatas.equipmentData[index.equipment_data_id];
|
|
switch (index.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;
|
|
}
|
|
} |