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;
}
}
///
/// 每日Item容器
///
public UIContainerSelect dayItems;
///
/// 详细奖励列表
///
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 dayInfos = new List();
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 selects = new List();
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();
}
}
}