You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
323 lines
9.2 KiB
323 lines
9.2 KiB
using AX.MessageSystem; |
|
using System; |
|
using System.Collections; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
|
|
public class Bags : MonoBehaviour |
|
{ |
|
public List<Equip> EquipData = new List<Equip>(); |
|
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<CloneGameObjInfo>().gameObjID; |
|
} |
|
/// <summary> |
|
/// 获取装备 |
|
/// </summary> |
|
/// <param name="id"></param> |
|
/// <returns></returns> |
|
public Equip GetEquip(string name) |
|
{ |
|
foreach (var item in EquipData) |
|
{ |
|
if (item.Name == name) |
|
{ |
|
return item; |
|
} |
|
} |
|
return null; |
|
} |
|
/// <summary> |
|
/// 检查背包是否有某件装备 |
|
/// </summary> |
|
/// <param name="name"></param> |
|
/// <returns></returns> |
|
public bool HasEquip(string name) |
|
{ |
|
foreach (var item in EquipData) |
|
{ |
|
if (item.Name == name) |
|
{ |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |
|
/// <summary> |
|
/// 使用背包装备 |
|
/// </summary> |
|
/// <param name="equip"></param> |
|
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); |
|
} |
|
/// <summary> |
|
/// 添加装备 |
|
/// </summary> |
|
/// <param name="id">装备ID</param> |
|
/// <param name="num">装备数量</param> |
|
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(); |
|
} |
|
/// <summary> |
|
/// 强制更新装备数量 |
|
/// </summary> |
|
/// <param name="id">ID</param> |
|
/// <param name="num">数量</param> |
|
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(); |
|
} |
|
} |
|
/// <summary> |
|
/// 移除选中的装备 |
|
/// </summary> |
|
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); |
|
} |
|
/// <summary> |
|
/// 清空所有装备 |
|
/// </summary> |
|
public void ClearEquipData() |
|
{ |
|
EquipData.Clear(); |
|
Reloading(); |
|
MessageDispatcher.SendMessage("REFRESH_UIVIEW_BAG"); |
|
if (OnAddEquip != null) |
|
{ |
|
OnAddEquip(); |
|
} |
|
// 数量发生变化 |
|
EquipManager.Instance.UpdateClientEquipCount(); |
|
//同步操作 |
|
EquipManager.Instance.BagDataSync(this); |
|
} |
|
/// <summary> |
|
/// 同步换装 |
|
/// </summary> |
|
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; |
|
} |
|
} |
|
}
|
|
|