162 lines
4.6 KiB
C#
162 lines
4.6 KiB
C#
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;
|
||
}
|
||
}
|