using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using GCGame.Table; using Module.Log; using System; public class NewYearPage : MarketingUIBaseCS { #region 单例 private static NewYearPage _instance; public static NewYearPage Instance { get { if (_instance != null) { return _instance; } Debug.LogError("无法得到实例"); return null; } } private void Awake() { if (_instance == null) { _instance = this; } closeBtn.onClick.AddListener(Close); } #endregion public UIContainerSelect menuContainer; // 列表容器 public GameObject pageContainer; // 页面容器 public List actPageInfo; // 菜单信息 public Button closeBtn; // 关闭按钮 private int curPageID; // 当前显示页面ID public int New_Order; private void OnEnable() { Init(); } private void OnDisable() { if (MarketingActsRoot.Instance() != null) { MarketingActsRoot.Instance().ClearShowingWin(_ActID); } } public void Close() { //UIManager.CloseUI(UIInfo.NewYearPage); gameObject.SetActive(false); } private void Init() { AskForInfo(); } /// /// 设置菜单 /// /// private void SetMenu(List menuInfos) { if (menuInfos.Count > 0) { List selectMenus = new List(); int L_ActID = 0; int L_openWithAct = 0; Tab_ActItemUsePath tab = TableManager.GetActItemUsePathByID(2, 0); if (tab != null) { string parm = tab.ActParam; string[] parms = parm.TrimEnd(' ', '"').Split('*'); if (parms.Length > 1) { L_ActID = Convert.ToInt32(parms[0]); L_openWithAct = Convert.ToInt32(parms[1]); } } if (_ActID == L_ActID && openWithAct == L_openWithAct) { if (menuInfos.Count > New_Order) { selectMenus.Add(menuInfos[New_Order]); openWithAct = -1; } else if (menuInfos.Count == New_Order) { selectMenus.Add(menuInfos[menuInfos.Count - 1]); openWithAct = -1; } } else { selectMenus.Add(menuInfos[0]); } menuContainer.InitSelectContent(menuInfos, selectMenus, OnMenuSelect); } } /// /// 加载页面 /// /// private void OnMenuSelect(object info) { MarketingActState selectMenu = info as MarketingActState; if (selectMenu != null) { if (MarketingActsRoot.Instance()._ShowingWin.ContainsKey(curPageID)) { if (MarketingActsRoot.Instance()._ShowingWin[curPageID] != null) { MarketingActsRoot.Instance()._ShowingWin[curPageID].SetActive(false); } else { LogModule.DebugLog("Try to get an activity in Openservice. But is Null, please check _ActId = " + curPageID); } MarketingActsRoot.Instance()._ShowingWin.Remove(curPageID); } ///////////// 临时修复Bug:会出现没及时删除旧页面的情况 if (MarketingActsRoot.Instance()._ShowingWin.ContainsKey(selectMenu.actID)) { if (MarketingActsRoot.Instance()._ShowingWin[selectMenu.actID] != null) { MarketingActsRoot.Instance()._ShowingWin[selectMenu.actID].SetActive(false); } else { LogModule.DebugLog("Try to get an activity in Openservice. But is Null, please check _ActId = " + curPageID); } MarketingActsRoot.Instance()._ShowingWin.Remove(selectMenu.actID); } //////////// Tab_ActInfoClient tab = TableManager.GetActInfoClientByID(selectMenu.actID, 0); Hashtable parm = new Hashtable(); parm.Add("ActState", selectMenu); LuaUIManager.Instance.ShowLuaUIAsChild(tab.UIPath, pageContainer, MarketingActsRoot.Instance().LoadUICallBack, parm, true); curPageID = selectMenu.actID; } else { LogModule.ErrorLog("No this page."); } } #region 协议请求与接收 /// /// 请求 /// private void AskForInfo() { MarketingActsReq request = new MarketingActsReq(); request.actType = _ActID; request.SendMsg(); } /// /// 接收 /// /// protected override void MarketingActRetInner(MarketingActsRet marketActsRet) { base.MarketingActRetInner(marketActsRet); SetMenu(marketActsRet.actIDState); } #endregion // 用于设置活动接收菜单数据后显示的活动 // 无论存在此活动与否,都要在第一次显示过后,设回 -1 // -1 不跳转 private static int openWithAct = -1; public static int OpenWithAct { get { return openWithAct; } set { openWithAct = value; } } }