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(); } } }