using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using GCGame.Table;
using Games.GlobeDefine;

// 福利大厅-离线经验
// 字典
// 44072 - 可领高倍提示
// 44073 - 点击未开启项提示
// ????? - 离线经验为0,不可领取奖励提示
public class WelfareOffLineExpCtr : WelfarePageBaseCS {

    private static WelfareOffLineExpCtr instance;
    public static WelfareOffLineExpCtr Instance
    {
        get { return instance; }
    }

    private void Awake()
    {
        if(instance == null)
        {
            instance = this;
        }
    }

    public override void OnPacketRec(NodePageInfoRet packet)
    {
        _NodeId = packet._NodeId;
        _Packet = packet;

        ShowInfo();
    }

    private void ShowInfo()
    {
        if(_Packet == null)
        {
            return;
        }

        if(_Packet._NodeDescList.Count > 0)
        {
            _DescLists[0].gameObject.SetActive(true);
            _DescLists[0].text = StrDictionary.GetServerDictionaryFormatString(_Packet._NodeDescList[0]);
        }
        else
        {
            _DescLists[0].gameObject.SetActive(false);
        }

        _SubNodeContainer.InitContentItem(_Packet._SubNodeList);
    }

    // 领取离线奖励
    public void OnTagGetBtnClick(int tagIndex)
    {
        if(_Packet == null || tagIndex >= _Packet._SubNodeList.Count)
        {
            return;
        }

        int betterAwardIndex = -1;
        for(int i = _Packet._SubNodeList.Count - 1; i > tagIndex; --i)
        {
            if(_Packet._SubNodeList[i]._SubNodeState == 1)
            {
                betterAwardIndex = i;
                break;
            }
        }

        int resultTagIndex = betterAwardIndex == -1 ? tagIndex : betterAwardIndex;
        string rawStr_Type = _Packet._SubNodeList[resultTagIndex]._SubNodeDescList[0];
        string rawStr_Lv = _Packet._SubNodeList[resultTagIndex]._SubNodeDescList[1];
        int privilegeLv = Convert.ToInt32(rawStr_Lv.Substring(rawStr_Lv.IndexOf("*") + 1));
        string rawStr_Multiple = _Packet._SubNodeList[resultTagIndex]._SubNodeDescList[2];
        int privilegeMultiple = Convert.ToInt32(rawStr_Multiple.Substring(rawStr_Multiple.IndexOf("*") + 1));

        // 存在更好的奖品,弹出提示框,并不允许领取该档位奖品
        if (betterAwardIndex != -1)
        {
            string result = StrDictionary.GetClientDictionaryString("#{44072}", privilegeLv, privilegeMultiple);
            MessageBoxLogic.OpenOKBox(result, null, null);
        }
        // 不存在更好的奖品
        else
        {
            // 可领取
            if(_Packet._SubNodeList[tagIndex]._SubNodeState == 1)
            {
                ReqGetWelfareRew req = new ReqGetWelfareRew();
                req._NodeId = _Packet._NodeId;
                req._SubNodeId = tagIndex;
                req.SendMsg();
            }
            // 不可领取,给出升级vip提示
            else
            {
                // 先判断是否可以有经验可领取
                string rawStr_Exp = _Packet._SubNodeList[resultTagIndex]._SubNodeDescList[3];
                int privilegeExp = Convert.ToInt32(rawStr_Exp.Substring(rawStr_Exp.IndexOf("*") + 1));
                if(privilegeExp <= 0)
                {
                    GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{44075}"));
                }
                else
                {
                    int vipLevel = GameManager.gameManager.PlayerDataPool.VipCost;

                    if (vipLevel < privilegeLv)
                    {
                        GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{44076}"));
                    }
                    else
                    {
                        string result = StrDictionary.GetClientDictionaryString("#{44073}", privilegeLv, privilegeMultiple);
                        MessageBoxLogic.OpenOKCancelBox(result, null, 
                        ()=>
                        {
                            // 点击确认,跳转vip
                            YuanBaoShopLogic.OpenVipPage();
                        }, null);
                    }
                }
            }
        }
    }
}