using UnityEngine; using UnityEngine.Events; using System.Collections; public class Equipment { public enum Priority { None = 0, Hp = 1, Damage = 2, Move = 3 } private static System.Array priorityArr = System.Enum.GetValues (typeof(Priority)); public static Priority GetPriorityByCode(int code) { return (Priority)priorityArr.GetValue (code); } public UnityEvent Updated = new UnityEvent (); private int id; private EquipData data; public Equipment(int id, EquipData data) { this.id = id; this.data = data; } public int GetId() { return id; } public EquipData GetData() { return this.data; } private int m_Level = 1; public int GetLevel() { return m_Level; } public void SetLevel(int level) { m_Level = Mathf.Max(1, level); } public int GetMaxLevel() { return UpgradeUtil.GetMaxLevel (GetData ().quality); } public string GetLevelLabel() { return Language.GetStr ("EquipPanel", "levelLabel")+" "+GetLevel(); } private int m_Count; public int GetCount() { return m_Count; } public void SetCount(int value) { m_Count = value; } public int GetNextLevelCount() { return UpgradeUtil.GetUpgradeCount (GetLevel ()); } public int GetUpgradePrice() { return UpgradeUtil.GetUpgradePrice (GetLevel (), GetData ().quality); } public void Upgrade(int level, int count) { SetLevel (level); SetCount (count); Updated.Invoke (); } public string GetDescription() { string desc = ""; // desc += Language.GetStr("Equip", "currentLevel") + "\n\n"; if (HasHp ()) desc += "\t+" + GetHp (GetLevel()) + " " + Language.GetStr ("Equip", "hp") + "\n"; if (HasDmg ()) desc += "\t+" + GetDmg (GetLevel()) + " " + Language.GetStr ("Equip", "dmg") + "\n"; int maxLevel = UpgradeUtil.GetMaxLevel (data.quality); if (GetLevel () < maxLevel) { desc += "\n"+Language.GetStr ("Equip", "nextLevel") + "\n"; if (HasHp ()) desc += "\t+" + GetHp (GetLevel () + 1) + " " + Language.GetStr ("Equip", "hp") + "\n"; if (HasDmg ()) desc += "\t+" + GetDmg (GetLevel () + 1) + " " + Language.GetStr ("Equip", "dmg") + "\n"; } else { desc += "\n"+Language.GetStr ("Equip", "maxLevel"); } return desc; } public bool HasHpProperty() { return HasHp (); } public float GetHpProperty() { float hp = data.hp + data.hp_up * (float)m_Level; float hpProperty = hp; return hpProperty; } public bool HasDamageProperty() { return HasDmg (); } public float GetDamageProperty() { float dmg = data.dmg + data.dmg_up * (float)m_Level; float dmgProperty = dmg; return dmgProperty; } public bool HasMoveProperty() { return HasMove (); } public float GetMoveProperty() { // float move = data.hp + data.hp_up * (float)m_Level; // // float hpProperty = hp; // return hpProperty; return 0; } public float GetHp(int level) { float value = data.hp + (data.hp_up * (float)(level - 1)); return UpgradeUtil.GetHp (value); } public bool HasHp() { return data.hp > 0; } public float GetDmg(int level) { float value = data.dmg + (data.dmg_up * (float)(level - 1)); return UpgradeUtil.GetDamage (value); } public bool HasDmg() { return data.dmg > 0; } public float GetMove(int level) { float value = data.mov + (data.mov_up * (float)(level - 1)); return value; } public bool HasMove() { return data.mov > 0; } public void Dispose() { Updated.RemoveAllListeners (); } }