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