网上演练贵港万达广场(人员密集)
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

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;
}
}
}