using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using static UnityEngine.EventSystems.EventTrigger; public class EquipInfoPanel : BasePanel { public Button btnClose; public Button btnDress; public Button btnFenjie; public Button btnChong; public Text txtName; public Text txtJingjie; public Text txtQuality; //分解获得灵石 public Text txtStone; //分解获得的源石数量 private int fenjieEquip; //重铸 public Text txtChong; public Transform basicAtt; public Transform addAtt; public GameObject txtEntry; //本装备属性 private EquipData equipData; private PlayerData player; //词条颜色--红色 private string entryColor= "FF4E00"; //装备颜色--绿色 private string equipColorLv= "33A154"; //装备颜色--蓝色 private string equipColorLan= "0030FF"; //装备颜色--紫色 private string equipColorZi= "8800FF"; //装备颜色--黄色 private string equipColorHuang= "FFD104"; //装备颜色--红色 private string equipColorHong= "FF5F04"; public override void Init() { player = GameDataMgr.Instance.player; btnClose.onClick.AddListener(() => { UIManager.Instance.HidePanel(); }); btnDress.onClick.AddListener(() => { DressEquip(); UIManager.Instance.HidePanel(); }); btnFenjie.onClick.AddListener(() => { }); btnChong.onClick.AddListener(() => { }); } private void FenJieEquip() { //装备品阶分解的数量 switch (equipData.equipGrade) { case 1: fenjieEquip += 100; break; case 2: fenjieEquip += 200; break; case 3: fenjieEquip += 350; break; case 4: fenjieEquip += 750; break; case 5: fenjieEquip += 1000; break; case 6: fenjieEquip += 1500; break; case 7: fenjieEquip += 3000; break; case 8: fenjieEquip += 5000; break; } //附加属性增加装备的分解的源石数量 switch (equipData.equipAddAtt.Count) { case 1: fenjieEquip += 50; break; case 2: fenjieEquip += 100; break; case 3: fenjieEquip += 150; break; case 4: fenjieEquip += 200; break; } } //给外界更新面板的方法 public void UpdatePanel(EquipData equip) { equipData = equip; txtName.text=equip.name; txtJingjie.text = equip.name.Substring(0, 2); switch (equip.equipAddAtt.Count) { case 0: UpdateColor(equipColorLv, "绿色"); break; case 1: UpdateColor(equipColorLan, "蓝色"); break; case 2: UpdateColor(equipColorZi, "紫色"); break; case 3: UpdateColor(equipColorHuang, "黄色"); break; case 4: UpdateColor(equipColorHong, "红色"); break; } CreateTxtEntry(equip); } private void UpdateColor(string color,string colorName) { txtName.color = GameMgr.Instance.HexToColor(color); txtName.gameObject.GetComponent().effectColor = GameMgr.Instance.HexToColorAlaph(color); txtJingjie.color = GameMgr.Instance.HexToColor(color); txtJingjie.gameObject.GetComponent().effectColor = GameMgr.Instance.HexToColorAlaph(color); txtQuality.text = "colorName"; txtQuality.color = GameMgr.Instance.HexToColor(color); txtQuality.gameObject.GetComponent().effectColor = GameMgr.Instance.HexToColorAlaph(color); } //更新装备属性条 private void CreateTxtEntry(EquipData equip) { GameObject go; //装备基础属性词条 if (equip.equipBasicAtt.Count > 0) { for (int i = 0; i < equip.equipBasicAtt.Count; i++) { go = Instantiate(txtEntry); go.transform.SetParent(basicAtt, false); go.GetComponent().UpdatePanel(equip.equipBasicAtt[i]); } } //装备附加属性词条 if (equip.equipAddAtt.Count > 0) { for (int i = 0; i < equip.equipAddAtt.Count; i++) { go = Instantiate(txtEntry); go.transform.SetParent(addAtt, false); go.GetComponent().UpdatePanel(equip.equipBasicAtt[i], entryColor); } } } //玩家点击穿戴 private void DressEquip() { GameDataMgr.Instance.userEquip.itemEquip.Remove(equipData); switch (equipData.equipType) { case 1: AddEquip("tou"); break; case 2: AddEquip("yi"); break; case 3: AddEquip("shou"); break; case 4: AddEquip("yao"); break; case 5: AddEquip("tui"); break; case 6: AddEquip("xie"); break; } //更新装备面板 UIManager.Instance.GetPanel().UpdatePanel(); //更新玩家属性面板 UIManager.Instance.GetPanel().UpdatePanel(); //保存数据 GameDataMgr.Instance.EquipDataSave(); GameDataMgr.Instance.PlayerDataSave(); } //玩家穿戴装备--替换,或者穿戴 private void AddEquip(string name) { if (GameDataMgr.Instance.userEquip.dressEquip.ContainsKey(name)) { if (GameDataMgr.Instance.userEquip.dressEquip[name]!=null) { EquipData equip = GameDataMgr.Instance.userEquip.dressEquip[name]; GameDataMgr.Instance.userEquip.dressEquip[name] = equipData; GameDataMgr.Instance.userEquip.itemEquip.Add(equip); //换上去的属性增加 PlayerDataAdd(equipData, 1); //换下来的装备,减少属性 PlayerDataAdd(equip, -1); } else { GameDataMgr.Instance.userEquip.dressEquip[name] = equipData; //玩家属性增加 PlayerDataAdd(equipData,1); } } else { GameDataMgr.Instance.userEquip.dressEquip.Add(name, equipData); //玩家属性增加 PlayerDataAdd(equipData,1); } } /// /// 属性增加 /// /// 装备信息 /// 是增加还是减少 1表示增加,-1表示减少 private void PlayerDataAdd(EquipData equip,int num) { //基础属性增加 for (int i = 0; i < equip.equipBasicAtt.Count; i++) { switch (equip.equipBasicAtt[i].entryType) { case 1: player.hp += num*equip.equipBasicAtt[i].num; break; case 2: player.atk += num * equip.equipBasicAtt[i].num; break; case 3: player.def += num * equip.equipBasicAtt[i].num; break; case 4: player.crit += num * equip.equipBasicAtt[i].num; break; case 5: player.critDamage += num * equip.equipBasicAtt[i].num; break; case 6: player.atkSpeed += num * equip.equipBasicAtt[i].num; break; case 7: player.stoneAdd += num * equip.equipBasicAtt[i].num; break; case 8: player.kangCrit += num * equip.equipBasicAtt[i].num; break; case 9: player.gasAdd += num * equip.equipBasicAtt[i].num; break; } } //附加属性增加 for (int i = 0; i < equip.equipAddAtt.Count; i++) { switch (equip.equipBasicAtt[i].entryType) { case 1: player.hp += num * equip.equipBasicAtt[i].num; break; case 2: player.atk += num * equip.equipBasicAtt[i].num; break; case 3: player.def += num * equip.equipBasicAtt[i].num; break; case 4: player.crit += num * equip.equipBasicAtt[i].num; break; case 5: player.critDamage += num * equip.equipBasicAtt[i].num; break; case 6: player.atkSpeed += num * equip.equipBasicAtt[i].num; break; case 7: player.stoneAdd += num * equip.equipBasicAtt[i].num; break; case 8: player.kangCrit += num * equip.equipBasicAtt[i].num; break; case 9: player.gasAdd += num * equip.equipBasicAtt[i].num; break; } } } }