Files
JJBB/Assets/Project/Script/GUI/Message/GiftBagChooseCtr.cs

162 lines
4.6 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GCGame.Table;
using Games.Item;
using Module.Log;
// 礼包物品选择控制
public class GiftBagChooseCtr : MonoBehaviour {
public UIContainerMultiSelect itemContainer; // 物品列表容器
public Button confirmBtn; // 确认按钮
public Button cancelBtn; // 取消按钮
public UIBackRayBehind bgMask; // 背景遮罩(点击空白取消功能)
public UIImgText needSelectCount; // 需要选择的数量
private int itemID; // 物品id服务端用需要原封返回
private int scriptID; // 物品脚本ID服务端用需要原封返回
private int chooseNum; // 需要选择数目
private static GiftBagChooseCtr _instance; // Single
public static GiftBagChooseCtr Instance
{
get { return _instance; }
}
private void Awake()
{
if(_instance == null)
{
_instance = this;
}
// 按钮相关初始化
if(confirmBtn == null || cancelBtn == null)
{
LogModule.ErrorLog("Need sepcify confirmBtn and cancelBtn !!!");
}
else
{
confirmBtn.onClick.AddListener(ConfirmAward);
cancelBtn.onClick.AddListener(Close);
}
if(bgMask != null)
{
bgMask._BackClick.AddListener(Close);
}
}
private void OnEnable()
{
itemID = -1;
scriptID = -1;
chooseNum = -1;
}
private void OnItemSelect(object item)
{
List<SpecialGiftSelectInfo> selects = itemContainer.GetSelecteds<SpecialGiftSelectInfo>();
SpecialGiftSelectInfo selectObj = item as SpecialGiftSelectInfo;
if(selects != null && selectObj != null)
{
int index = selects.IndexOf(selectObj);
if (selects.Count == chooseNum && index == -1)
{
GUIData.AddNotifyData("超出可选择数量,重复点击可取消选中!");
}
}
ItemTooltipsLogic.ShowItemTooltip(selectObj.itemid, ItemTooltipsLogic.ShowType.Info, Vector3.zero);
}
public void Show(object packet)
{
ReqSpecialGiftSelect data = packet as ReqSpecialGiftSelect;
if (data == null)
{
return;
}
itemID = data.itemid;
scriptID = data.script;
chooseNum = data.selectcount;
if (itemContainer != null)
{
itemContainer._IsMultiSelect = true;
itemContainer.multiSelectNum = chooseNum;
itemContainer.InitSelectContent(data.info, null, OnItemSelect);
}
else
{
LogModule.ErrorLog("No container !!!");
}
needSelectCount.text = chooseNum.ToString();
}
#region
// 确认礼包
private void ConfirmAward()
{
List<SpecialGiftSelectInfo> selectItems = itemContainer.GetSelecteds<SpecialGiftSelectInfo>();
if(selectItems.Count < chooseNum)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{86718}", chooseNum));
return;
}
if(selectItems.Count == chooseNum)
{
if(IsNeedRandomPanel(itemID))
{
UIManager.CloseUI(UIInfo.BackPackRoot);
UIManager.ShowUI(UIInfo.GiftBagRandomPanel);
}
List<int> indexList = new List<int>();
for (int i = 0; i < selectItems.Count; ++i)
{
indexList.Add(selectItems[i].index);
}
RetSpecialGiftSelect packet = new RetSpecialGiftSelect();
packet.itemid = itemID;
packet.script = scriptID;
packet.indexlist = indexList;
packet.SendMsg();
Close();
}
}
// 检查物品是否需要随机面板
public bool IsNeedRandomPanel(int itemID)
{
Tab_CommonItem tab = TableManager.GetCommonItemByID(itemID, 0);
if(tab != null)
{
if(tab.ClassID == (int)ItemClass.GIFTBAG && tab.SubClassID == (int)GiftBagSubType.MultiSelection_Random)
{
return true;
}
}
return false;
}
#endregion
private void Close()
{
UIManager.CloseUI(UIInfo.GiftBagItemChooseCtr);
}
private void OnDestroy()
{
_instance = null;
}
}