Files
JJBB/Assets/Project/Script/GUI/NewYearPage/NewYearSign.cs

127 lines
3.5 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class NewYearSign : MarketingUIBaseCS
{
// 用于每日Item的数据结构
public class NewYearSignDayItemData
{
public int day;
public MarketingActAwardTag award;
public NewYearSignDayItemData(int d, MarketingActAwardTag a)
{
day = d;
award = a;
}
}
/// <summary>
/// 每日Item容器
/// </summary>
public UIContainerSelect dayItems;
/// <summary>
/// 详细奖励列表
/// </summary>
public UIContainerBase awardContainer;
public Button getBtn; // 获取按钮
public GameObject cantGetBtn; // 不可获取按钮(不可领取)
public GameObject yetGetBtn; // 不可获取按钮(已领取)
private int selectedTagID; // 当前选中的天数,用于发送协议
public int beforeActId; // root和页面结合在一个页面显示
private void OnEnable()
{
selectedTagID = -1;
AskForInfo();
}
private void OnDisable()
{
if (MarketingActsRoot.Instance() != null)
{
MarketingActsRoot.Instance().ClearShowingWin(_ActID);
MarketingActsRoot.Instance().ClearShowingWin(beforeActId);
}
}
// 页面信息请求
private void AskForInfo()
{
MarketingActAwardPageReq req = new MarketingActAwardPageReq();
req.actID = this._ActID;
req.updateOrInit = 1;
req.SendMsg();
}
protected override void MarketingActPageAwardRetDelInner(object packet)
{
MarketingActAwardPageRet info = packet as MarketingActAwardPageRet;
if (info != null)
{
ShowInfo(info);
}
}
public void ShowInfo(MarketingActAwardPageRet info)
{
// 找到第一个已领取的日期索引,然后去后一个,会优先显示那个日期的后一个。
int preferIndex = 0;
bool hasFind = false;
List<NewYearSignDayItemData> dayInfos = new List<NewYearSignDayItemData>();
for (int i = 0; i < info.awardTags.Count; ++i)
{
dayInfos.Add(new NewYearSignDayItemData(i + 1, info.awardTags[i]));
if (hasFind == false && (info.awardTags[i].state == 1 || info.awardTags[i].state == 0))
{
hasFind = true;
preferIndex = i;
}
}
List<NewYearSignDayItemData> selects = new List<NewYearSignDayItemData>();
selects.Add(dayInfos[preferIndex]);
dayItems.InitSelectContent(dayInfos, selects, OnDaySelected);
}
// 天数Item点击回调
private void OnDaySelected(object day)
{
NewYearSignDayItemData info = (NewYearSignDayItemData)day;
// 奖励物品列表
awardContainer.InitContentItem(info.award.awardItems);
// 按钮状态
getBtn.gameObject.SetActive(info.award.state == 1);
yetGetBtn.gameObject.SetActive(info.award.state == 2);
cantGetBtn.gameObject.SetActive(info.award.state == 0);
selectedTagID = info.award.tagID;
}
public void OnGetBtnClick()
{
if (selectedTagID != -1)
{
MarketingActAwardPageGetAward req = new MarketingActAwardPageGetAward();
req.actID = _ActID;
req.tagID = selectedTagID;
req.SendMsg();
}
}
}