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

// 旗状态
public class CaptureFlagItem : UIItemBase {

    public class CaptureFlagData
    {
        public Tab_CrossSerFlagPoint tabCrossSerFlagPoint;
        public int CampIndex;
        public int PointID;//据点
        public int GuardID;//守卫
        public int State;
        public int CDTime;
    }
    public GameObject Effect1;
    public GameObject Effect2;

    public Image CDImage;
    public Image campImg;
    public TimeDownText countDown;
    CaptureFlagData _captureFlagData = new CaptureFlagData();

    private float CDOverTime = 0;
    private float CDTotleTime = 0;
    bool LastIsZli = false;
    int needShowEffect = 0;
    public override void Show(Hashtable hash)
    {
        _captureFlagData = hash["InitObj"] as CaptureFlagData;
        if (_captureFlagData == null)
            return;
        Refresh();
        base.Show(hash);
    }

    private void Update()
    {
        if(needShowEffect > 0)
        {
            needShowEffect--;
            if(needShowEffect<=0)
            {
                needShowEffect = 0;
                Effect2.SetActive(true);
            }
        }

        if(CDOverTime - Time.realtimeSinceStartup > 0)
        {
            CDImage.fillAmount = (CDOverTime - Time.realtimeSinceStartup) / CDTotleTime;
        }

    }

    public override void Refresh()
    {
        int curCamp = CaptureFlagStatePanelCtr.GetCurCamp();

        LoadAssetBundle.Instance.SetImageSprite(campImg, CaptureFlagStatePanelCtr.GetSpriteNameByCamp(_captureFlagData.CampIndex,false));

        if (_captureFlagData.CDTime > 0)
        {
            //中立
            Tab_CrossSerFlagConfig tab = TableManager.GetCrossSerFlagConfigByID(0, 0);

            float leavetime = _captureFlagData.CDTime + tab.BuffTime - GlobalData.ServerAnsiTime;
            CDImage.gameObject.SetActive(true);
            if (CDOverTime - Time.realtimeSinceStartup <= 0)
            {
                CDImage.fillAmount = 1;
                CDTotleTime = leavetime;
                CDOverTime = leavetime + Time.realtimeSinceStartup;
                countDown.Init("", CDOverTime, 0, 5845, null, TimeDownText.TimeFormat.number);
                LastIsZli = true;
            }
            Effect2.SetActive(false);
            needShowEffect = -1;
            return;
        }
        if (_captureFlagData.CampIndex == curCamp)
        {
            //已占领
            countDown.Init(string.Format("{0}", StrDictionary.GetClientDictionaryString("#{5843}")));
            Effect2.SetActive(false);
            needShowEffect = -1;
            CDImage.gameObject.SetActive(false);
            if (LastIsZli)
                Effect1.SetActive(true);
        }
        else
        {
            //可争夺
            countDown.Init(string.Format("{0}", StrDictionary.GetClientDictionaryString("#{5842}")));
            CDImage.gameObject.SetActive(false);
            if (LastIsZli)
            {
                Effect1.SetActive(true);
                needShowEffect = 20;
            }
            else
            {
                needShowEffect = 20;
            }
        }
        LastIsZli = false;
        base.Refresh();
    }
}