Files
JJBB/Assets/Project/Script/GUI/Welfare/WelfareRootCtr.cs

274 lines
7.3 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
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;
}
}