using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class EquipDressPanel : BasePanel { public Button btnClose; public Button btnDis; public Button btnFenjie; public Button btnChong; public Text txtName; public Text txtJingjie; public Text txtQuality; 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(); }); btnDis.onClick.AddListener(() => { DisEquip(); UIManager.Instance.HidePanel(); }); btnFenjie.onClick.AddListener(() => { }); btnChong.onClick.AddListener(() => { }); } //给外界更新面板的方法 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 DisEquip() { switch (equipData.equipType) { case 1: DischargeEquip("tou"); break; case 2: DischargeEquip("yi"); break; case 3: DischargeEquip("shou"); break; case 4: DischargeEquip("yao"); break; case 5: DischargeEquip("tui"); break; case 6: DischargeEquip("xie"); break; } //更新装备面板 UIManager.Instance.GetPanel().UpdatePanel(); //更新玩家属性面板 UIManager.Instance.GetPanel().UpdatePanel(); //保存数据 GameDataMgr.Instance.EquipDataSave(); GameDataMgr.Instance.PlayerDataSave(); } //卸下装备 private void DischargeEquip(string name) { //装备部位变为空 GameDataMgr.Instance.userEquip.dressEquip[name] = null; //装备列表添加装备 GameDataMgr.Instance.userEquip.itemEquip.Add(equipData); //玩家属性减少 PlayerDataDis(); } /// /// 属性增加 /// /// 装备信息 /// 是增加还是减少 1表示增加,-1表示减少 private void PlayerDataDis() { //基础属性减少 for (int i = 0; i < equipData.equipBasicAtt.Count; i++) { switch (equipData.equipBasicAtt[i].entryType) { case 1: player.hp -= equipData.equipBasicAtt[i].num; break; case 2: player.atk -=equipData.equipBasicAtt[i].num; break; case 3: player.def -= equipData.equipBasicAtt[i].num; break; case 4: player.crit -= equipData.equipBasicAtt[i].num; break; case 5: player.critDamage -= equipData.equipBasicAtt[i].num; break; case 6: player.atkSpeed -= equipData.equipBasicAtt[i].num; break; case 7: player.stoneAdd -= equipData.equipBasicAtt[i].num; break; case 8: player.kangCrit -= equipData.equipBasicAtt[i].num; break; case 9: player.gasAdd -= equipData.equipBasicAtt[i].num; break; } } //附加属性减少 for (int i = 0; i < equipData.equipAddAtt.Count; i++) { switch (equipData.equipBasicAtt[i].entryType) { case 1: player.hp -= equipData.equipBasicAtt[i].num; break; case 2: player.atk -= equipData.equipBasicAtt[i].num; break; case 3: player.def -= equipData.equipBasicAtt[i].num; break; case 4: player.crit -= equipData.equipBasicAtt[i].num; break; case 5: player.critDamage -= equipData.equipBasicAtt[i].num; break; case 6: player.atkSpeed -= equipData.equipBasicAtt[i].num; break; case 7: player.stoneAdd -= equipData.equipBasicAtt[i].num; break; case 8: player.kangCrit -= equipData.equipBasicAtt[i].num; break; case 9: player.gasAdd -= equipData.equipBasicAtt[i].num; break; } } } }