using UnityEngine;
using DG.Tweening;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
using UnityEngine.EventSystems;
using System.Collections;
using System;

public class UI_MenuBar : BasePanel
{
    [SerializeField]
    private Sprite ExpandSprite, CollapseSprite;
    private Button closeDefaultBtn, toolRoomBtn, siteBtn, workOrderBtn, missionBtn, officeBtn, disassemblyAssemblyWorkOrderBtn, toolKitBtn;
    public int countDown = 0;

    private int time;

    public int workOrderID = 5006;
    public int disassemblyAssemblyWorkOrderID = 5007;


    /// <summary>
    /// ¼Ç¼µ¹¼ÆÊ±µÄЭ³Ì
    /// </summary>
    private Coroutine coroutine;
    public void Init()
    {
        //coroutine = GameManager.MonoMgr.StartCoroutine(CountDown(countDown));
        //MenuBarIamge = GetControl<Image>("MenuBar");
        closeDefaultBtn = GetControl<Button>("CloseDefaultBtn");
        toolRoomBtn = GetControl<Button>("ToolRoomBtn");
        siteBtn = GetControl<Button>("SiteBtn");
        workOrderBtn = GetControl<Button>("WorkOrderBtn");
        missionBtn = GetControl<Button>("MissionBtn");
        officeBtn = GetControl<Button>("OfficeBtn");
        toolKitBtn = GetControl<Button>("ToolKitBtn");
        disassemblyAssemblyWorkOrderBtn = GetControl<Button>("DisassemblyAssemblyWorkOrderBtn");
    }
    public override void ShowMe()
    {
        GameManager.EventMgr.AddEventListener<E_SceneType>(Enum_EventType.SwitchScene, CheckBtnBySceneName);
        GameManager.EventMgr.AddEventListener<int>(Enum_EventType.SwitchSubProcessStepTriggerID, SwitchSubProcessStepTriggerID);
    }

    private void SwitchSubProcessStepTriggerID(int triggerID)
    {
        if (triggerID == workOrderID)
        {
            Debug.Log("¹¤×÷µ¥Ìáʾ");
        }
        if (triggerID == disassemblyAssemblyWorkOrderID)
        {
            Debug.Log("²ð×°¹¤µ¥Ìáʾ");
        }
    }

    public override void HideMe()
    {
        GameManager.EventMgr.RemoveEventListener<E_SceneType>(Enum_EventType.SwitchScene, CheckBtnBySceneName);
        GameManager.EventMgr.RemoveEventListener<int>(Enum_EventType.SwitchSubProcessStepTriggerID, SwitchSubProcessStepTriggerID);
    }
    public void CheckBtnBySceneName(E_SceneType type)
    {
        Debug.Log(type.ToString());
        if (GetControl<Image>("MenuBar").transform.localPosition.x == 960)
        {
            GetControl<Image>("CloseDefaultBtn").sprite = ExpandSprite;
            GetControl<Image>("MenuBar").transform.DOLocalMoveX(1070, 0.5f);
        }
        toolRoomBtn.gameObject.SetActive(type != E_SceneType.ToolRoom);
        siteBtn.gameObject.SetActive(type == E_SceneType.ToolRoom);
        workOrderBtn.gameObject.SetActive(type == E_SceneType.Office || type == E_SceneType.Site);
        missionBtn.gameObject.SetActive(type == E_SceneType.Office || type == E_SceneType.ToolRoom || type == E_SceneType.Site);
        officeBtn.gameObject.SetActive(type == E_SceneType.ToolRoom);
        disassemblyAssemblyWorkOrderBtn.gameObject.SetActive(type == E_SceneType.Office);
        toolKitBtn.gameObject.SetActive(type != E_SceneType.Office);
    }


    /// <summary>
    /// µ¹¼ÆÊ±
    /// </summary>
    /// <param name="time">µ¹¼ÆÊ±¶à¾Ã</param>
    /// <returns></returns>
    private IEnumerator CountDown(int time)
    {
        this.time = time;
        countDown = time;
        WaitForSeconds waitForSeconds = new WaitForSeconds(1);
        while (countDown > 0)
        {
            yield return waitForSeconds;
            GetControl<Image>("MenuBar").transform.DOLocalMoveX(1070, 0.5f);
        }
    }
    protected override void OnClick(string btnName)
    {
        switch (btnName)
        {
            case "CloseDefaultBtn":
                GetControl<Image>("MenuBar").transform.DOLocalMoveX(960, 0.5f);
                GetControl<Image>("CloseDefaultBtn").sprite = CollapseSprite;
                if (GetControl<Image>("MenuBar").transform.localPosition.x == 960)
                {
                    GetControl<Image>("CloseDefaultBtn").sprite = ExpandSprite;
                    GetControl<Image>("MenuBar").transform.DOLocalMoveX(1070, 0.5f);
                }
                break;

            case "ToolRoomBtn":
                GameManager.UIMgr.ShowPanel<UI_LoadingPanel>(E_UI_Layer.System, (panel) =>
                {
                    panel.Init();
                    GameManager.EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.1f);
                    GameManager.ScenesMgr.LoadSceneAsyn("04_ToolMaterialScene", () =>
                    {
                        GameManager.EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.9f);
                        GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchScene, GameManager.RunModelMgr.SceneType);
                    });
                });
                break;
            case "SiteBtn":

                break;
            case "WorkOrderBtn":
                if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(workOrderID, false) == 0)
                {
                    GameManager.UIMgr.ShowPanel<UI_SelectWorkTicketPanel>(E_UI_Layer.Mid, (panel) =>
                    {
                        panel.Init(workOrderID);
                    });
                }
                break;
            case "WorkTicketBtn":

                break;
            case "DisassemblyAssemblyWorkOrderBtn":
                if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(disassemblyAssemblyWorkOrderID, false) == 0)
                {
                    GameManager.UIMgr.ShowPanel<UI_InstallAndDismantleTicketPanel>(E_UI_Layer.Mid, (panel) =>
                {
                    panel.Init(disassemblyAssemblyWorkOrderID);
                });
                }
                break;
            case "ToolKitBtn":
                GameManager.UIMgr.ShowPanel<UI_ToolAndMaterialPanel>(E_UI_Layer.Mid, (p) =>
                {

                });
                break;
            default:
                break;
        }

    }
}