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 _MneuItemList) { if(_MneuItemList.Count <= 0) { LogModule.ErrorLog("_MneuItemList COUNT IS NULL"); return; } if (_CurSelectedNodeId == -1) { _MenuItemSelectContainer.InitSelectContent(_MneuItemList, new List { _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 { _MneuItemList[index] }, OnWelfareMenuItemClick); break; } } if(!_IsFind) { _MenuItemSelectContainer.InitSelectContent(_MneuItemList, new List { _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 _PageDic = new Dictionary(); private int _CurSelectedNodeId = -1; public void ShowPageByNodeId(int _NodeId) { List> _pageDicList = new List>(_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 luaUINameList = new List(); 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(); 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; } /// /// 指定以某个界面显示福利大厅 /// /// /// SevenDay = 200, /// EveryDay = 201, /// OnLine = 202, /// LevelPacket = 203, /// MonthlyCard = 204 /// public void OpenWith(int nodeID) { isTryShowAppointedAct = true; _CurSelectedNodeId = nodeID; } }