Files
JJBB/Assets/Project/Script/GUI/Recharge/DailyRechargeRoot.cs

273 lines
7.8 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using UnityEngine;
using System.Collections;
using GCGame.Table;
using System.Collections.Generic;
using Module.Log;
using UnityEngine.UI;
using GCGame;
// 每日累充 - 已将每日充值和每日累充合并
public class DailyRechargeRoot : MarketingUIBaseCS
{
public CommonItemRecharge[] items; // 内容数组
public Image descNum;
public Sprite[] descNumRes;
private UIBackRayBehind behindGO; // 点击背景
private Button closeBtn; // 关闭按钮
private Button confirmBtn; // 确认按钮
private GameObject hasGetGO; // 已领取按钮显示
private RectTransform menuListRt; // 标签,菜单父级物体
private RectTransform contentListRt; // 内容父级物体
private RechargeMenuItem[] menuItems; // 菜单数组
private RechargeMenuItem curMenu; // 目前的选中的菜单
private void Awake()
{
behindGO = transform.Find("BehindImage").GetComponent<UIBackRayBehind>();
closeBtn = transform.Find("BG/Btn_Close").GetComponent<Button>();
confirmBtn = transform.Find("BG/Btn_Confirm").GetComponent<Button>();
hasGetGO = transform.Find("BG/Btn_HasGet").gameObject;
menuListRt = transform.Find("MenuList").GetComponent<RectTransform>();
contentListRt = transform.Find("Contents").GetComponent<RectTransform>();
menuItems = menuListRt.GetComponentsInChildren<RechargeMenuItem>();
// 按钮事件添加监听
behindGO._BackClick.AddListener(CloseWindow);
closeBtn.onClick.AddListener(CloseWindow);
confirmBtn.onClick.AddListener(OnConfirmClick);
for (int i = 0; i < menuItems.Length; i++)
{
menuItems[i]._PanelClickEvent = OnMenuItemSelect;
}
}
// 用于设置活动接收菜单数据后显示的活动
// 无论存在此活动与否,都要在第一次显示过后,设回 -1
// -1 不跳转
private static int openWithAct = -1;
public static int OpenWithAct
{
set { openWithAct = value; }
}
private int beforeActId = -1;
private void OnEnable()
{
AskInfo();
}
public void CloseWindow()
{
gameObject.SetActive(false);
}
private void OnDisable()
{
if(MarketingActsRoot.Instance() != null)
{
if (MarketingActsRoot.Instance()._ShowingWin.ContainsKey(_ActID))
{
MarketingActsRoot.Instance().ClearShowingWin(_ActID);
}
if(beforeActId != -1)
{
MarketingActsRoot.Instance().ClearShowingWin(beforeActId);
}
}
}
private void InitMenuList(List<MarketingActPacketSubTag> menuInfos)
{
for (int i = 0; i < menuItems.Length; i++)
{
if (i < menuInfos.Count)
{
Hashtable info = new Hashtable();
info.Add("InitObj", menuInfos[i]);
menuItems[i].Show(info);
menuItems[i].index = i;
}
}
}
// 寻找下一个需要显示的菜单
public void MoveNext()
{
int nextIndex = -1;
for (int i = 0; i < menuItems.Length; i++)
{
MarketingActPacketSubTag info = menuItems[i].info as MarketingActPacketSubTag;
if (info != null)
{
if (info.state == 1)
{
nextIndex = i;
break;
}
}
}
if (nextIndex != -1)
{
menuItems[nextIndex].OnPointerClick(null);
}
else
{
// 由于没有可选择累计充值项,直接关闭
//DailyRechargeRoot.Instance.Close();
//menuItems[0].OnPointerClick(null);
}
}
private void OnMenuItemSelect(UIItemBase selectMenu)
{
RechargeMenuItem tempMenu = selectMenu as RechargeMenuItem;
if (tempMenu != null)
{
UpdataDescImg(tempMenu.index);
if (curMenu != null)
{
curMenu.UnSelected();
}
curMenu = tempMenu;
curMenu.Selected();
for (int i = 0; i < items.Length; i++)
{
if (i < curMenu.info.awardTags[0].awardSubTags.Count)
{
items[i].Show(curMenu.info.awardTags[0].awardSubTags[i]);
}
else
{
items[i].gameObject.SetActive(false);
}
}
InitButton(curMenu.info.awardTags[0].state);
}
}
private void UpdataDescImg(int index)
{
if (index < descNumRes.Length)
{
descNum.sprite = descNumRes[index];
}
}
public void InitButton(int state)
{
if (confirmBtn != null)
{
confirmBtn.gameObject.SetActive(state == 1 || state == 0);
}
if (hasGetGO != null)
{
hasGetGO.SetActive(state == 2);
}
}
#region
// 请求
public void AskInfo()
{
MarketingActsReq req = new MarketingActsReq();
req.actType = this._ActID;
req.SendMsg();
}
protected override void MarketingActRetInner(MarketingActsRet marketActsRet)
{
if (marketActsRet != null)
{
if (marketActsRet != null && marketActsRet.actIDState.Count > 0)
{
beforeActId = this._ActID;
MarketingActState tempActState = new MarketingActState();
tempActState.actID = marketActsRet.actIDState[0].actID;
Hashtable param = new Hashtable();
param.Add("ActState", tempActState);
if (MarketingActsRoot.Instance() != null)
{
MarketingActsRoot.Instance().LoadUICallBack(true, param, gameObject);
}
AskForInfo();
}
}
}
private void AskForInfo()
{
MarketingActAwardPageReq req = new MarketingActAwardPageReq();
req.actID = this._ActID;
req.updateOrInit = 1;
req.SendMsg();
}
int isShow = 1;
// 新数据接口
protected override void MarketingActPageAwardRetDelInner(object packet)
{
MarketingActPacketPageRet p = packet as MarketingActPacketPageRet;
if (p == null)
return;
InitMenuList(p.subTags);
if (Utils.GetServerDateTime().ToString("HH:mm")== "00:00")
{
Debug.LogError("当前时间 "+Utils.GetServerDateTime().ToString("HH:mm"));
isShow = 1;
}
if (isShow == 1)
{
menuItems[0].OnPointerClick(null);
isShow = 0;
}
MoveNext();
}
protected override void MarketingActPageGetAwardRetInner(object packet)
{
MarketingActAwardPageGetAwardRet p = packet as MarketingActAwardPageGetAwardRet;
if (p == null)
return;
}
#endregion
// 监听按钮点击,获得按钮上的信息
public void OnConfirmClick()
{
if (curMenu.info.awardTags[0].state == 0)
{
YuanBaoShopLogic.OpenChargePage();
confirmBtn.gameObject.SetActive(true);
hasGetGO.gameObject.SetActive(false);
}
else if (curMenu.info.awardTags[0].state == 1)
{
MarketingActAwardPageGetAward req = new MarketingActAwardPageGetAward();
req.actID = this._ActID;
req.tagID = curMenu.info.awardTags[0].subTagID;
req.SendMsg();
confirmBtn.gameObject.SetActive(false);
hasGetGO.gameObject.SetActive(true);
}
}
}