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

public class ShortCutItem : MonoBehaviour {

    public Button m_UseButton;
    public Button m_CloseButton;
    public Image Icon;
    public Text desc;
    public Text _Title;

    public static ShortCutItem Instance;

    private void Awake()
    {
        Instance = this;
    }

    private void OnEnable()
    {
        InvokeRepeating("CalculateDis", 1.0f, 0.2f);
        StartCoroutine(AutoUseItem());
    }

    private void OnDestroy()
    {
        Instance = null;
    }

    private const float hideDis = 3.0f;
    private Vector2 m_DesPos = new Vector2();
    private Vector2 m_MainPlayerPos = new Vector2();
    private int _targetCharModelId = -1;
    public void SetIconAndDesc(int missionId, int missionIndex)
    {
        Tab_MissionBase missionBase = TableManager.GetMissionBaseByID(missionId, 0);
        if(missionBase == null)
        {
            closeShortCutItem();
        }

        Tab_MissionLogic missionLogic = TableManager.GetMissionLogicByID(missionBase.LogicID, 0);
        if(missionLogic == null)
        {
            closeShortCutItem();
        }

        Tab_MissionCollectItem collectItem = TableManager.GetMissionCollectItemByID(missionLogic.GetLogicIDbyIndex(missionIndex), 0);
        if(collectItem == null)
        {
            closeShortCutItem();
        }

        _targetCharModelId = collectItem.CharModelID;

        if (_Title != null)
        {
            _Title.text = collectItem.ItemName;
        }

        Tab_MissionDictionary missionDic = TableManager.GetMissionDictionaryByID(missionId , 0);
        if(missionDic == null)
        {
            closeShortCutItem();
        }
        m_DesPos = new Vector2(missionDic.GetTargetNpcPosXbyIndex(missionIndex), missionDic.GetTargetNpcPosZbyIndex(missionIndex));

        LoadAssetBundle.Instance.SetImageSprite(Icon, collectItem.ItemIcon);
        desc.text = collectItem.ItemDesc;
    }

    public void closeShortCutItem()
    {
        CancelInvoke();
        UIManager.CloseUI(UIInfo.CollectionItem);
    }

    private int _countTime = 0;
    IEnumerator AutoUseItem()
    {
        while(gameObject.activeInHierarchy)
        {
            yield return new WaitForSeconds(1.0f);
            _countTime++;
            if(_countTime >= 5)
            {
                useMyItem();
            }
        }
    }

    public void useMyItem()
    {
        StopAllCoroutines();
        GameManager.gameManager.MissionManager.MissionCollectItem(_targetCharModelId);
        closeShortCutItem();
    }

    public void CalculateDis()
    {
        if (Singleton<ObjManager>.GetInstance().MainPlayer == null)
            return;

        m_MainPlayerPos = new Vector2(Singleton<ObjManager>.GetInstance().MainPlayer.transform.position.x, Singleton<ObjManager>.GetInstance().MainPlayer.transform.position.z);
        if (Vector2.Distance(m_MainPlayerPos, m_DesPos) >= hideDis)
        {
            closeShortCutItem();
        }
    }

}