127 lines
3.5 KiB
C#
127 lines
3.5 KiB
C#
|
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();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|