using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using GCGame;
using System.Collections.Generic;
using Module.Log;
using Games.LogicObj;
using Games.GlobeDefine;
using GCGame.Table;
using Games.UserCommonData;
using Games.Events;
using Games.Mission;

public class GuildWarTips : MonoBehaviour
{
    Dictionary<int, string> KillTips = new Dictionary<int, string>()
    {
        {3,"#{7400}" },
        {4,"#{7401}" },
        {5,"#{7402}" },
        {6,"#{7403}" },
        {7,"#{7404}" },
        {8,"#{7405}" },
        {9,"#{7406}" },
        {10,"#{7407}" },
    };

    Dictionary<int, string> OverKillTips = new Dictionary<int, string>()
    {
        {3,"#{7408}" },
        {4,"#{7409}" },
        {5,"#{7410}" },
        {6,"#{7411}" },
        {7,"#{7412}" },
        {8,"#{7413}" },
        {9,"#{7414}" },
        {10,"#{7415}" },
    };

    private string Red = "<color=#ff5555ff>{0}</color>";
    private string Blue = "<color=#64dff9ff>{0}</color>";
    public Text Tip;
    private List<string> ShowListC = new List<string>();  //连杀数
    private List<string> ShowListT = new List<string>();  //终结连杀数

    public GameObject OverKillWnd;
    public GameObject OtherKillWnd;
    public GameObject SelfKillWnd;

    public Text continueSkill;
    public UIImgText continueSelf;

    float lastOverShowTime = 0;
    float lastOtherShowTime = 0;
    float lastSelfShowTime = 0;
    private void Update()
    {
        lastSelfShowTime -= Time.deltaTime;
        lastOtherShowTime -= Time.deltaTime;

        int CanClose = 0;
        if (lastSelfShowTime <= 0 && lastSelfShowTime != -100)
        {
            SelfKillWnd.SetActive(false);
            lastSelfShowTime = -100;
        }

        if (Time.realtimeSinceStartup - lastOverShowTime > 2f && ShowListT.Count > 0)
        {
            Tip.text = ShowListT[0];
            ShowListT.RemoveAt(0);
            lastOverShowTime = Time.realtimeSinceStartup;

        }

        if (lastOtherShowTime <= 0 && lastOtherShowTime != -100)
        {
            OtherKillWnd.SetActive(false);
            lastOtherShowTime = -100;
        }

        if (lastSelfShowTime <= 0)
        {
            CanClose++;
        }
        if (lastOtherShowTime <= 0)
        {
            CanClose++;
        }
        
        if (ShowListT.Count <= 0 && Time.realtimeSinceStartup - lastOverShowTime > 2f)
        {
            OverKillWnd.SetActive(false);
            CanClose++;
        }
    }

    public void ShowKillTips(SynContinuousKill binary)
    {
        if(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.RoleName == binary.killerName)
        {
            SelfKillWnd.SetActive(true);
            continueSelf.text = binary.killerCount >= 100 ? StrDictionary.GetClientDictionaryString("#{9917}") : binary.killerCount.ToString();
            lastSelfShowTime = 2;
        }

        OtherKillWnd.SetActive(true);
        string tip = "";
        if (binary.killerCamp == binary.selfCamp)
            tip = StrDictionary.GetClientDictionaryString("#{35117}", string.Format("<color=#64dff9>{0}</color> ", binary.killerName), string.Format(" <color=#e3df6d>{0}</color>", binary.killerCount));
        //ShowListC.Add(StrDictionary.GetClientDictionaryString("#{35117}", string.Format("<color=#64dff9>{0}</color> ", binary.killerName), string.Format(" <color=#e3df6d>{0}</color>", binary.killerCount)));
        else
            tip = StrDictionary.GetClientDictionaryString("#{35117}", string.Format("<color=#ff4545>{0}</color> ", binary.killerName), string.Format(" <color=#e3df6d>{0}</color>", binary.killerCount));
        //ShowListC.Add(StrDictionary.GetClientDictionaryString("#{35117}", string.Format("<color=#ff4545>{0}</color> ", binary.killerName), string.Format(" <color=#e3df6d>{0}</color>", binary.killerCount)));
        lastOtherShowTime = 2;
        continueSkill.text = tip;

        if (binary.killerCount < 3)
            return;
        int index = binary.killerCount;
        if (index > 10)
            index = 10;
        string ID = null;
        if (KillTips.TryGetValue(index, out ID))
        {
            OverKillWnd.SetActive(true);
            if (binary.killerCamp == binary.selfCamp)
                ShowListT.Add(StrDictionary.GetClientDictionaryString(ID, string.Format(Blue, binary.killerName)));
            else
                ShowListT.Add(StrDictionary.GetClientDictionaryString(ID, string.Format(Red, binary.killerName)));
        }
    }

    public void ShowOverKillTip(SynTerminator binary)
    {
        if (binary.killerCount < 3)
            return;
        int index = binary.killerCount;
        if (index > 10)
            index = 10;
        string ID = null;
        if (OverKillTips.TryGetValue(index, out ID))
        {
            OverKillWnd.SetActive(true);
            string killName = (binary.selfCamp == binary.killerCamp) ? string.Format(Blue, binary.killerName) : string.Format(Red, binary.killerName);
            string overName = (binary.selfCamp == binary.terminatorCamp) ? string.Format(Blue, binary.terminatorName) : string.Format(Red, binary.terminatorName);
            ShowListT.Add(StrDictionary.GetClientDictionaryString(ID, overName, killName));
        }
    }

    
}