Files
JJBB/Assets/Project/Script/GUI/NewYearPage/NewYearPage.cs
2024-08-23 15:49:34 +08:00

211 lines
5.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<MarketingActState> 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();
}
/// <summary>
/// 设置菜单
/// </summary>
/// <param name="menuInfos"></param>
private void SetMenu(List<MarketingActState> menuInfos)
{
if (menuInfos.Count > 0)
{
List<MarketingActState> selectMenus = new List<MarketingActState>();
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);
}
}
/// <summary>
/// 加载页面
/// </summary>
/// <param name="info"></param>
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
/// <summary>
/// 请求
/// </summary>
private void AskForInfo()
{
MarketingActsReq request = new MarketingActsReq();
request.actType = _ActID;
request.SendMsg();
}
/// <summary>
/// 接收
/// </summary>
/// <param name="marketActsRet"></param>
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; }
}
}