Files
JJBB/Assets/Project/Script/GUI/Message/GiftBagChooseCtr.cs
2024-08-23 15:49:34 +08:00

162 lines
4.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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