CultivateImmortal/Assets/Scripts/GameScene/UI/EquipInfoPanel.cs

327 lines
9.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<EquipInfoPanel>();
});
btnDress.onClick.AddListener(() =>
{
DressEquip();
UIManager.Instance.HidePanel<EquipInfoPanel>();
});
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<Outline>().effectColor = GameMgr.Instance.HexToColorAlaph(color);
txtJingjie.color = GameMgr.Instance.HexToColor(color);
txtJingjie.gameObject.GetComponent<Outline>().effectColor = GameMgr.Instance.HexToColorAlaph(color);
txtQuality.text = "colorName";
txtQuality.color = GameMgr.Instance.HexToColor(color);
txtQuality.gameObject.GetComponent<Outline>().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<TxtEntry>().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<TxtEntry>().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<EquipPanel>().UpdatePanel();
//更新玩家属性面板
UIManager.Instance.GetPanel<UserPanel>().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);
}
}
/// <summary>
/// 属性增加
/// </summary>
/// <param name="equip">装备信息</param>
/// <param name="num">是增加还是减少 1表示增加-1表示减少</param>
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;
}
}
}
}