using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using GCGame.Table;

public class BanQuetOperationPanel : MonoBehaviour {

    public static BanQuetOperationPanel Instance;
    public GameObject _CouplePanel;
    public GameObject _GuestPanel;
    public GameObject _WeddingCarPanel;

    public BanQuetRedPacketPanel _RedPacketPanel;
    public BanQuetCandyPanel _CandyPanel;
    public BanQuetInvatePanel _InvatePanel;
    public BanQuetBeKickedPanel _KickPanel;
    public BanQuetFireWorkPanel _FireWorkpanel;
    public GameObject _NextRefreshTimeObj;
    public Text _NextRefreshTime;


    private RetBanQuetSceneInfo _PacketInfo;

    private void Awake()
    {
        Instance = this;
    }

    private void OnDestroy()
    {
        Instance = null;
    }

    private void OnEnable()
    {
        ShowNextBanquetFreshTime();
    }

    void ShowNextBanquetFreshTime()
    {
        if(GlobalData.BanquetNextRefreshTime != -1 
            && GlobalData.BanquetNextRefreshTime > GlobalData.ServerAnsiTime)
        {
            RefreshSpecialCountTime(GlobalData.BanquetNextRefreshTime);
        }
    }

    public void OnPacket(RetBanQuetSceneInfo packet)
    {
        _PacketInfo = packet;
        _CouplePanel.SetActive(packet.nIsCouple == 1);
        _GuestPanel.SetActive(packet.nIsCouple != 1);

        if (BanQuetInvatePanel.Instance)
            BanQuetInvatePanel.Instance.RefeshBtnState(packet.worldInvateEndTime, packet.guildInvateEndTime, packet.friendInvateEndTime);
    }

    public void OnCandyBtn()
    {
        _CandyPanel.gameObject.SetActive(true);
    }

    public void OnRedPacketBtn()
    {
        _RedPacketPanel.gameObject.SetActive(true);

        _RedPacketPanel.Init(_PacketInfo.groom, _PacketInfo.bride);
    }

    public void OnInvateBtn()
    {
        _InvatePanel.gameObject.SetActive(true);
        _InvatePanel.Init(_PacketInfo.permissionList, _PacketInfo.worldInvateEndTime, _PacketInfo.guildInvateEndTime, _PacketInfo.friendInvateEndTime);
    }

    public void ShowKickPanel(long endTime)
    {
        _RedPacketPanel.gameObject.SetActive(false);
        _CandyPanel.gameObject.SetActive(false);
        _InvatePanel.gameObject.SetActive(false);

        _KickPanel.gameObject.SetActive(true);
        _KickPanel.InitRemainTime(endTime);
    }

    public void OnFireWorkBtn()
    {
        _FireWorkpanel.gameObject.SetActive(true);
    }

    #region 婚宴特效倒计时
    public void RefreshSpecialCountTime(int endTime)
    {
        var remainTime = endTime - GlobalData.ServerAnsiTime;
        if (remainTime > 0)
        {
            if (!_NextRefreshTimeObj.activeInHierarchy)
                _NextRefreshTimeObj.SetActive(true);
            StartCoroutine(CountTimeSync(endTime));
            _NextRefreshTime.text = (remainTime / 60).ToString().PadLeft(2, '0') + ":" + (remainTime % 60).ToString().PadLeft(2, '0');
        }
        else
        {
            _NextRefreshTime.text = "00:00";
        }
        _NextRefreshTimeObj.SetActive(endTime != -1);  //在倒计时为0的时候不会因为时间为0而隐藏,不然会显得很奇怪
    }

    IEnumerator CountTimeSync(int endTime)
    {
        while (true)
        {
            yield return new WaitForSeconds(1.0f);
            var remainTime = endTime - GlobalData.ServerAnsiTime;
            //Debug.LogError("RemainTime : " + remainTime);
            if (remainTime < 0)
            {
                _NextRefreshTime.text = "00:00";
                yield break;
            }
            _NextRefreshTime.text = (remainTime / 60).ToString().PadLeft(2, '0') + ":" + (remainTime % 60).ToString().PadLeft(2, '0');
        }
    }
    #endregion


    #region 婚车操作
    public void ShowWeddingCarOperationPanel()
    {
        _RedPacketPanel.gameObject.SetActive(false);
        _CandyPanel.gameObject.SetActive(false);
        _InvatePanel.gameObject.SetActive(false);
        _KickPanel.gameObject.SetActive(false);
        _FireWorkpanel.gameObject.SetActive(false);

        _CouplePanel.SetActive(false);
        _GuestPanel.SetActive(false);
        _WeddingCarPanel.SetActive(true);
    }

    public void OnWeddingCarExitBtn()
    {
        ReqExitWeddingCar req = new ReqExitWeddingCar();
        req._flag = 1;
        req.SendMsg();
    }

    #endregion
}