274 lines
7.3 KiB
C#
274 lines
7.3 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
using UnityEngine.UI;
|
|
using System.Collections.Generic;
|
|
using GCGame.Table;
|
|
using Module.Log;
|
|
|
|
public class WelfareCommonRewItemInfo
|
|
{
|
|
public int _ItemId;
|
|
public int _ItemCount;
|
|
public WelfareCommonRewItemInfo(int _ItemId, int _ItemCount)
|
|
{
|
|
this._ItemId = _ItemId;
|
|
this._ItemCount = _ItemCount;
|
|
}
|
|
}
|
|
|
|
// 福利大厅
|
|
public class WelfareRootCtr : MonoBehaviour
|
|
{
|
|
|
|
#region static
|
|
|
|
public static void ShowWelfarePage(string pageStr)
|
|
{
|
|
int pageIdx = int.Parse(pageStr);
|
|
UIManager.ShowUI(UIInfo.WelfareRoot,
|
|
(bool bSuccess, object param) =>
|
|
{
|
|
if (bSuccess)
|
|
{
|
|
PopOffLineExp info = param as PopOffLineExp;
|
|
if (info != null)
|
|
{
|
|
WelfareRootCtr.Instance.OpenWith(pageIdx);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
#endregion
|
|
|
|
public static WelfareRootCtr Instance;
|
|
private void Awake()
|
|
{
|
|
Instance = this;
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
Instance = null;
|
|
LuaUIManager.Instance.OnDestroyCallBack(luaUINameList);
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
ReqWelfareInfo();
|
|
}
|
|
|
|
public void ReqWelfareInfo()
|
|
{
|
|
WelfareInfoReq req = new WelfareInfoReq();
|
|
req.flag = -1;
|
|
req.SendMsg();
|
|
}
|
|
|
|
public void OnWelfareInfoRet(WelfareInfoRet packet)
|
|
{
|
|
InitMenuItem(packet._ActInfo);
|
|
}
|
|
|
|
public enum WlfareRewardState
|
|
{
|
|
Invalid = -1,
|
|
None = 0, //没有奖励可以领取
|
|
CanGet = 1, //可以领取但是没有领取
|
|
HasGeted = 2, //已经领取 没有状态了
|
|
CanReCheck = 3, //可以补签
|
|
CanGetAgain = 4,//充值可再次领取
|
|
}
|
|
|
|
#region
|
|
public UIContainerSelect _MenuItemSelectContainer;
|
|
public GameObject _PageContainer;
|
|
private bool isTryShowAppointedAct = false; // 以指定打开特定的UI
|
|
#endregion
|
|
public void InitMenuItem(List<WelfareMenuItemInfo> _MneuItemList)
|
|
{
|
|
if(_MneuItemList.Count <= 0)
|
|
{
|
|
LogModule.ErrorLog("_MneuItemList COUNT IS NULL");
|
|
return;
|
|
}
|
|
|
|
if (_CurSelectedNodeId == -1)
|
|
{
|
|
_MenuItemSelectContainer.InitSelectContent(_MneuItemList, new List<WelfareMenuItemInfo> { _MneuItemList[0] }, OnWelfareMenuItemClick);
|
|
}
|
|
else
|
|
{
|
|
bool _IsFind = false;
|
|
for(int index = 0; index < _MneuItemList.Count; index++)
|
|
{
|
|
if(_MneuItemList[index]._NodeId == _CurSelectedNodeId)
|
|
{
|
|
_IsFind = true;
|
|
_MenuItemSelectContainer.InitSelectContent(_MneuItemList, new List<WelfareMenuItemInfo> { _MneuItemList[index] }, OnWelfareMenuItemClick);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!_IsFind)
|
|
{
|
|
_MenuItemSelectContainer.InitSelectContent(_MneuItemList, new List<WelfareMenuItemInfo> { _MneuItemList[0] }, OnWelfareMenuItemClick);
|
|
if(isTryShowAppointedAct == true)
|
|
{
|
|
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{6741}"));
|
|
}
|
|
}
|
|
}
|
|
|
|
isTryShowAppointedAct = false;
|
|
}
|
|
|
|
public void OnWelfareMenuItemClick(object param)
|
|
{
|
|
WelfareMenuItemInfo menuItemInfo = param as WelfareMenuItemInfo;
|
|
LogModule.DebugLog("ID: " + menuItemInfo._NodeId);
|
|
ShowPageByNodeId(menuItemInfo._NodeId);
|
|
}
|
|
|
|
[HideInInspector]
|
|
public Dictionary<int, GameObject> _PageDic = new Dictionary<int, GameObject>();
|
|
private int _CurSelectedNodeId = -1;
|
|
public void ShowPageByNodeId(int _NodeId)
|
|
{
|
|
List<KeyValuePair<int, GameObject>> _pageDicList = new List<KeyValuePair<int, GameObject>>(_PageDic);
|
|
for(int index = 0; index < _pageDicList.Count; index++)
|
|
{
|
|
if(_pageDicList[index].Value)
|
|
_pageDicList[index].Value.SetActive(_pageDicList[index].Key == _NodeId);
|
|
}
|
|
|
|
_CurSelectedNodeId = _NodeId;
|
|
|
|
if (_PageDic.ContainsKey(_CurSelectedNodeId) && _PageDic[_CurSelectedNodeId] != null)
|
|
{
|
|
_PageDic[_CurSelectedNodeId].SetActive(true);
|
|
ReqNodePageInfo(_CurSelectedNodeId);
|
|
}
|
|
else
|
|
{
|
|
StartCoroutine(ShowPageAsyc(_CurSelectedNodeId));
|
|
}
|
|
}
|
|
|
|
|
|
private List<string> luaUINameList = new List<string>();
|
|
IEnumerator ShowPageAsyc(int _NodeId)
|
|
{
|
|
yield return new WaitForEndOfFrame();
|
|
|
|
Tab_ActInfoClient actInfoClient = TableManager.GetActInfoClientByID(_NodeId, 0);
|
|
if (actInfoClient == null)
|
|
{
|
|
LogModule.ErrorLog("Can't find nodeId in ActInfoClient : " + _NodeId);
|
|
yield break;
|
|
}
|
|
|
|
Hashtable hash = new Hashtable();
|
|
hash.Add("NodeId", _NodeId);
|
|
if (!luaUINameList.Contains(actInfoClient.UIPath))
|
|
luaUINameList.Add(actInfoClient.UIPath);
|
|
LuaUIManager.Instance.ShowLuaUIAsChild(actInfoClient.UIPath, _PageContainer, LoadNodepageUICallBack, hash, true);
|
|
|
|
yield break;
|
|
}
|
|
|
|
public void ReqNodePageInfo(int _NodeId)
|
|
{
|
|
ReqNodePageInfo req = new ReqNodePageInfo();
|
|
req._NodeId = _NodeId;
|
|
req.SendMsg();
|
|
}
|
|
|
|
public void LoadNodepageUICallBack(bool sucess, object param, GameObject uiObj)
|
|
{
|
|
Hashtable hash = (Hashtable)param;
|
|
var _NodeId = -1;
|
|
if(hash.ContainsKey("NodeId"))
|
|
{
|
|
_NodeId = (int)hash["NodeId"];
|
|
}
|
|
|
|
if(_NodeId == -1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(uiObj != null)
|
|
{
|
|
var pageBase = uiObj.GetComponent<WelfarePageBaseCS>();
|
|
if(pageBase != null)
|
|
{
|
|
pageBase._NodeId = _NodeId;
|
|
}
|
|
}
|
|
|
|
if(_PageDic.ContainsKey(_NodeId) && _PageDic[_NodeId])
|
|
{
|
|
if(_PageDic[_NodeId].activeInHierarchy)
|
|
{
|
|
_PageDic[_NodeId].SetActive(false);
|
|
}
|
|
_PageDic[_NodeId] = uiObj;
|
|
}
|
|
else
|
|
{
|
|
if(_PageDic.ContainsKey(_NodeId))
|
|
{
|
|
_PageDic[_NodeId] = uiObj;
|
|
}
|
|
else
|
|
{
|
|
_PageDic.Add(_NodeId, uiObj);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
uiObj.SetActive(true);
|
|
ReqNodePageInfo(_NodeId);
|
|
}
|
|
|
|
public void ClearShowWin(int _NodeId)
|
|
{
|
|
if(_PageDic.ContainsKey(_NodeId))
|
|
{
|
|
if (_PageDic[_NodeId] != null)
|
|
{
|
|
_PageDic[_NodeId].SetActive(false);
|
|
}
|
|
_PageDic.Remove(_NodeId);
|
|
}
|
|
}
|
|
|
|
public void OnCloseBtnClick()
|
|
{
|
|
UIManager.CloseUI(UIInfo.WelfareRoot);
|
|
}
|
|
public void OnDisable()
|
|
{
|
|
_CurSelectedNodeId = -1;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 指定以某个界面显示福利大厅
|
|
/// </summary>
|
|
/// <param name="nodeID">
|
|
/// SevenDay = 200,
|
|
/// EveryDay = 201,
|
|
/// OnLine = 202,
|
|
/// LevelPacket = 203,
|
|
/// MonthlyCard = 204
|
|
/// </param>
|
|
public void OpenWith(int nodeID)
|
|
{
|
|
isTryShowAppointedAct = true;
|
|
_CurSelectedNodeId = nodeID;
|
|
}
|
|
}
|