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

330 lines
8.9 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 TMPro;
using UnityEngine;
using UnityEngine.UI;
public class EquipPanel : BasePanel
{
//按钮初始颜色是白色 点击后变成灰色
private string imgColor = "A6A6A6";
//按钮字体初始颜色 灰青
private string txtColor1 = "4A5551";
//按钮字体点击颜色 浅灰
private string txtColor2 = "CDDACF";
public Button btnClose;
public Button btnTou;
public Button btnYi;
public Button btnShou;
public Button btnYao;
public Button btnTui;
public Button btnXie;
public Text txtTou;
public Text txtYi;
public Text txtShou;
public Text txtYao;
public Text txtTui;
public Text txtXie;
public Button btnAll;
public Button btnToukui;
public Button btnZhanPao;
public Button btnHuShou;
public Button btnHuYao;
public Button btnHuTui;
public Button btnZhanXue;
public Button btnFenJie;
public Text txtAll;
public Text txtToukui;
public Text txtZhanPao;
public Text txtHuShou;
public Text txtHuYao;
public Text txtHuTui;
public Text txtZhanXue;
public Text txtFenJie;
//上下滑动框
public ScrollRect sv;
//装备预设体
public GameObject btnEquip;
//选择的按钮
private Button btnChoose;
//选择的文字
private Text txtChoose;
private UserEquipInfo userEquip;
//装备集合,用于更新页面
private List<GameObject> equipList = new List<GameObject>();
public override void Init()
{
btnChoose = btnAll;
txtChoose = txtAll;
userEquip = GameDataMgr.Instance.userEquip;
//进页面就更新界面
UpdatePanel();
btnClose.onClick.AddListener(() =>
{
UIManager.Instance.HidePanel<EquipPanel>();
});
//全部按钮
btnAll.onClick.AddListener(() =>
{
//不是当前按钮才更新
if (btnChoose!=btnAll)
{
//更新界面
UpdateAllEquip();
}
});
//头盔按钮
btnToukui.onClick.AddListener(() =>
{
//不是当前按钮才更新
if (btnChoose != btnToukui)
{
//更新界面
//设置按钮颜色
SetColor(btnToukui, txtToukui);
UpdateEquip(1);
}
});
//战袍按钮
btnZhanPao.onClick.AddListener(() =>
{
//不是当前按钮才更新
if (btnChoose != btnZhanPao)
{
//更新界面
//设置按钮颜色
SetColor(btnZhanPao, txtZhanPao);
UpdateEquip(2);
}
});
//护手按钮
btnHuShou.onClick.AddListener(() =>
{
//不是当前按钮才更新
if (btnChoose != btnHuShou)
{
//更新界面
//设置按钮颜色
SetColor(btnHuShou, txtHuShou);
UpdateEquip(3);
}
});
//护腰按钮
btnHuYao.onClick.AddListener(() =>
{
//不是当前按钮才更新
if (btnChoose != btnHuYao)
{
//更新界面
//设置按钮颜色
SetColor(btnHuYao, txtHuYao);
UpdateEquip(4);
}
});
//护腿按钮
btnHuTui.onClick.AddListener(() =>
{
//不是当前按钮才更新
if (btnChoose != btnHuTui)
{
//更新界面
//设置按钮颜色
SetColor(btnHuTui, txtHuTui);
UpdateEquip(5);
}
});
//战靴按钮
btnZhanXue.onClick.AddListener(() =>
{
//不是当前按钮才更新
if (btnChoose != btnZhanXue)
{
//更新界面
//设置按钮颜色
SetColor(btnZhanXue, txtZhanXue);
UpdateEquip(6);
}
});
//分解按钮
btnFenJie.onClick.AddListener(() =>
{
//不是当前按钮才更新
if (btnChoose != btnFenJie)
{
//更新界面
//设置按钮颜色
SetColor(btnFenJie, txtFenJie);
UpdateAllEquip();
}
});
//已装备头部按钮
btnTou.onClick.AddListener(() =>
{
DressEquipBtn("tou");
});
//已装备战袍按钮
btnYi.onClick.AddListener(() =>
{
DressEquipBtn("yi");
});
//已装备护手按钮
btnShou.onClick.AddListener(() =>
{
DressEquipBtn("shou");
});
//已装备护腰按钮
btnYao.onClick.AddListener(() =>
{
DressEquipBtn("yao");
});
//已装备护腿按钮
btnTui.onClick.AddListener(() =>
{
DressEquipBtn("tui");
});
//已装备战靴按钮
btnXie.onClick.AddListener(() =>
{
DressEquipBtn("xie");
});
}
/// <summary>
/// 已穿戴装备按钮点击事件
/// </summary>
private void DressEquipBtn(string name)
{
if (GameDataMgr.Instance.userEquip.dressEquip.ContainsKey(name))
{
if (GameDataMgr.Instance.userEquip.dressEquip[name] != null)
{
EquipDressPanel dress = UIManager.Instance.ShowPanel<EquipDressPanel>(E_UILayer.System);
dress.UpdatePanel(GameDataMgr.Instance.userEquip.dressEquip[name]);
}
}
}
/// <summary>
/// 按钮点击改变按钮的颜色
/// </summary>
/// <param name="btn"></param>
/// <param name="txt"></param>
public void SetColor(Button btn, Text txt)
{
//设置颜色前先把上一次的按钮颜色重置
if (btnChoose != null && txtChoose != null)
{
btnChoose.image.color = Color.white;
txtChoose.color = GameMgr.Instance.HexToColor(txtColor1);
}
//然后设置此次点击的按钮颜色
btn.image.color = GameMgr.Instance.HexToColor(imgColor);
txt.color = GameMgr.Instance.HexToColor(txtColor2);
//设置为新的按钮,方便下一次重置颜色
btnChoose = btn;
txtChoose = txt;
}
/// <summary>
/// 面板更新
/// </summary>
public void UpdatePanel()
{
//更新全部
UpdateAllEquip();
//设置按钮颜色
SetColor(btnAll, txtAll);
//更新已穿戴装备
if (userEquip.dressEquip.ContainsKey("tou"))
{
txtTou.text = userEquip.dressEquip["tou"].name;
txtTou.color = GameMgr.Instance.HexToColor(userEquip.dressEquip["tou"].equipColor);
}
if (userEquip.dressEquip.ContainsKey("yi"))
{
txtYi.text = userEquip.dressEquip["yi"].name;
txtYi.color = GameMgr.Instance.HexToColor(userEquip.dressEquip["yi"].equipColor);
}
if (userEquip.dressEquip.ContainsKey("shou"))
{
txtShou.text = userEquip.dressEquip["shou"].name;
txtShou.color = GameMgr.Instance.HexToColor(userEquip.dressEquip["shou"].equipColor);
}
if (userEquip.dressEquip.ContainsKey("yao"))
{
txtYao.text = userEquip.dressEquip["yao"].name;
txtYao.color = GameMgr.Instance.HexToColor(userEquip.dressEquip["yao"].equipColor);
}
if (userEquip.dressEquip.ContainsKey("tui"))
{
txtTui.text = userEquip.dressEquip["tui"].name;
txtTui.color = GameMgr.Instance.HexToColor(userEquip.dressEquip["tui"].equipColor);
}
if (userEquip.dressEquip.ContainsKey("xie"))
{
txtXie.text = userEquip.dressEquip["xie"].name;
txtXie.color = GameMgr.Instance.HexToColor(userEquip.dressEquip["xie"].equipColor);
}
}
//按钮点击更新页面
private void UpdateEquip(int equipType)
{
//1 头2衣服3手4腰5腿6鞋
//先清空装备列表
for (int i = 0; i < equipList.Count; i++)
{
Destroy(equipList[i]);
}
equipList.Clear();
for (int i = 0; i < userEquip.itemEquip.Count; i++)
{
if (userEquip.itemEquip[i].equipType==equipType)
{
GameObject go = Instantiate(btnEquip);
go.GetComponent<BtnEquip>().UpdatePanel(userEquip.itemEquip[i]);
go.transform.SetParent(sv.content, false);
equipList.Add(go);
}
}
}
//全部装备
private void UpdateAllEquip()
{
//先清空装备列表
for (int i = 0; i < equipList.Count; i++)
{
Destroy(equipList[i]);
}
equipList.Clear();
for (int i = 0; i < userEquip.itemEquip.Count; i++)
{
GameObject go = Instantiate(btnEquip);
go.GetComponent<BtnEquip>().UpdatePanel(userEquip.itemEquip[i]);
go.transform.SetParent(sv.content,false);
equipList.Add(go);
}
}
void OnDestroy()
{
equipList = null;
}
}