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.
324 lines
9.2 KiB
324 lines
9.2 KiB
4 years ago
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|