using AX.MessageSystem; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Bags : MonoBehaviour { public List EquipData = new List(); public Action OnAddEquip; //zhandoufu_yellow 战斗服 //BHF_Body 消防避火服 //FHF_Body 消防防化服 //GHF_Body 隔热防护服 //QXJYF_Body 抢险救援服 public GameObject ZDF_Body; public GameObject BHF_Body; public GameObject FHF_Body; public GameObject GHF_Body; public GameObject QXJYF_Body; public long GetGameObjectID() { return GetComponent().gameObjID; } /// /// 获取装备 /// /// /// public Equip GetEquip(string name) { foreach (var item in EquipData) { if (item.Name == name) { return item; } } return null; } /// /// 检查背包是否有某件装备 /// /// /// public bool HasEquip(string name) { foreach (var item in EquipData) { if (item.Name == name) { return true; } } return false; } /// /// 使用背包装备 /// /// public void UseEquip(Equip equip, int num = 1) { if (EquipData.Contains(equip)) { equip.Number -= num; if (equip.Number <= 0) { EquipData.Remove(equip); } MessageDispatcher.SendMessage("REFRESH_UIVIEW_BAG"); // 数量发生变化 EquipManager.Instance.UpdateClientEquipCount(); } } public void UseEquip(string name, int num = 1) { Equip item = GetEquip(name); UseEquip(item, num); } /// /// 添加装备 /// /// 装备ID /// 装备数量 public void AddEquip(string id, int num = 1) { Equip item = EquipManager.Instance.GetEquipByID(id); item.Number = num; AddEquip(item); //初始化购物车数据 EquipManager.Instance.InitData(); EquipManager.Instance.RefreshUIViewBag(); } /// /// 强制更新装备数量 /// /// ID /// 数量 public void UpdateEquipNumber(string id, int num) { Equip item = EquipManager.Instance.GetEquipByID(id); Equip temp = GetEquip(item.Name); //如果拥有这件装备 if (temp != null) { //可以多选累加数量 if (temp.IsSelectMore) { // 移动水炮/暴风雪炮/灭火机器人/水幕水带99,其他10 if (temp.Name == "移动水炮" || temp.Name == "暴风雪炮" || temp.Name == "灭火机器人" || temp.Name == "水幕水带") { temp.Number = Mathf.Clamp(num, 0, 99); } else { temp.Number = Mathf.Clamp(num, 0, 10); } // 数量发生变化 EquipManager.Instance.UpdateClientEquipCount(); } // 装备为0,移除 if (temp.Number <= 0) { EquipData.Remove(temp); } } else { //可以多选累加数量 if (item.IsSelectMore) { // 移动水炮/暴风雪炮/灭火机器人/水幕水带99,其他10 if (item.Name == "移动水炮" || item.Name == "暴风雪炮" || item.Name == "灭火机器人" || item.Name == "水幕水带") { item.Number = Mathf.Clamp(num, 0, 99); } else { item.Number = Mathf.Clamp(num, 0, 10); } } else { item.Number = Mathf.Clamp(num, 0, 1); if (item.Number==0) { return; } } //没有这件装备增加装备 for (int i = 0; i < EquipData.Count; i++) { //不同装备检查装备是否是同一个组 if (item.SelectGroup == EquipData[i].SelectGroup) { EquipData.RemoveAt(i); i--; } } //添加到背包 EquipData.Add(item); // 数量发生变化 EquipManager.Instance.UpdateClientEquipCount(); //如果装备是衣服 if (item.SelectGroup == 3) { Reloading(item.Name); } } if (OnAddEquip != null) { OnAddEquip(); } EquipManager.Instance.RefreshUIViewBag(); } //添加装备 public void AddEquip(Equip equip) { Equip temp = GetEquip(equip.Name); //如果拥有这件装备 if (temp != null) { //可以多选累加数量 if (temp.IsSelectMore) { //更新数量 int num = temp.Number + equip.Number; // 移动水炮/暴风雪炮/灭火机器人/水幕水带99,其他10 if (temp.Name == "移动水炮" || temp.Name == "暴风雪炮" || temp.Name == "灭火机器人" || temp.Name == "水幕水带") { temp.Number = Mathf.Clamp(num, 0, 99); } else { temp.Number = Mathf.Clamp(num, 0, 10); } // 数量发生变化 EquipManager.Instance.UpdateClientEquipCount(); } // 不可多选不做处理 } else { //没有这件装备增加装备 for (int i = 0; i < EquipData.Count; i++) { //不同装备检查装备是否是同一个组 if (equip.SelectGroup == EquipData[i].SelectGroup) { EquipData.RemoveAt(i); i--; } } //添加到背包 EquipData.Add(equip); // 数量发生变化 EquipManager.Instance.UpdateClientEquipCount(); //如果装备是衣服 if (equip.SelectGroup == 3) { Reloading(equip.Name); } } if (OnAddEquip != null) { OnAddEquip(); } } /// /// 移除选中的装备 /// public void DeleteSelectedEquip() { for (int i = 0; i < EquipData.Count; i++) { Equip equip = EquipData[i]; if (equip.IsSelected) { if (equip.SelectGroup == 3) { Reloading(); } EquipData.RemoveAt(i); i--; } } if (OnAddEquip != null) { OnAddEquip(); } // 数量发生变化 EquipManager.Instance.UpdateClientEquipCount(); MessageDispatcher.SendMessage("REFRESH_UIVIEW_BAG"); //同步操作 EquipManager.Instance.BagDataSync(this); } /// /// 清空所有装备 /// public void ClearEquipData() { EquipData.Clear(); Reloading(); MessageDispatcher.SendMessage("REFRESH_UIVIEW_BAG"); if (OnAddEquip != null) { OnAddEquip(); } // 数量发生变化 EquipManager.Instance.UpdateClientEquipCount(); //同步操作 EquipManager.Instance.BagDataSync(this); } /// /// 同步换装 /// public void ReloadingSync() { foreach (var item in EquipData) { if (item.SelectGroup == 3) { Reloading(item.Name); } } } //换装 public void Reloading(string name = "") { // 如果不存在换装,返回。 if (GHF_Body == null || BHF_Body == null || QXJYF_Body == null || FHF_Body == null || ZDF_Body == null) { return; } GHF_Body.SetActive(false); BHF_Body.SetActive(false); QXJYF_Body.SetActive(false); FHF_Body.SetActive(false); ZDF_Body.SetActive(false); switch (name) { case "隔热防护服": GHF_Body.SetActive(true); break; case "消防避火服": BHF_Body.SetActive(true); break; case "抢险救援服": QXJYF_Body.SetActive(true); break; case "消防防化服": FHF_Body.SetActive(true); break; default: ZDF_Body.SetActive(true); break; } } }