using Fort23.Core;
using Fort23.UTool;
using GameLogic.Combat;
using GameLogic.Combat.CombatTool;
using UnityEngine;
using UnityEngine.UI;
namespace Fort23.Mono.Phases
{
    public class Phase8 : IGuideLogic
    {
        public PlayerGuideManager pgm;
        private bool once = false;
        public Phase8(PlayerGuideManager guideManager)
        {
            this.pgm = guideManager;
            once = true;
        }
        public override void Active()
        {
            base.Active();
            actionList.Add(OnStep801);
            actionList.Add(OnStep802);
            actionList.Add(OnStep803);
            actionList.Add(OnStepEnd);
        }
        public override void Begin()
        {
            guideID = 8;
            guideIdx = -1;
            pgm.isForceDone = false;
            pgm.isTriggerDone = false;
        }
        public override void End()
        {
        }
        public override async CTask Guide()
        {
            if (actionList.Count > guideIdx)
            {
                pgm.ResetPlayerGuide();
                guideIdx++;
                SaveStep(guideIdx);
                await actionList[guideIdx](null);
            }
            else
            {
                LogTool.Error("没有引导了,强制结束。出错步骤,:" + pgm.curPhase + guideIdx);
                pgm.isForceDone = true;
            }
        }
        public override void LogicRelase()
        {
            actionList.Clear();
        }
        public override void LogicUpdate()
        {
        }
        /// 
        /// 点击宝箱
        /// 
        /// 
        public async CTask OnStep801(UnityEngine.Object obj)
        {
            pgm.StepInit();
            await TimerComponent.Instance.WaitAsync(100);
            GameObject gameObject = UIManager.Instance.GetComponent().Btn_Box.gameObject;
            Vector3 localPos = pgm.WorldPosToLocalPos(gameObject.transform.position);
            Vector2 size = gameObject.GetComponent().sizeDelta;
            pgm.SetfxTransVisiable(true);
            pgm.SetMaskTarget(gameObject);
            pgm.SetShowFramePosAndSize(localPos, size, 0, gameObject);
            await pgm.ConfigLogic(801, delegate() { });
            pgm.SetFingerPos(localPos);
            pgm.SetFingerVisiable(true);
        }
        /// 
        /// 点十连抽
        /// 
        /// 
        public async CTask OnStep802(UnityEngine.Object obj)
        {
            pgm.StepInit();
            await TimerComponent.Instance.WaitAsync(100);
            GameObject gameObject = UIManager.Instance.GetComponent().oneButton.gameObject;
            Vector3 localPos = pgm.WorldPosToLocalPos(gameObject.transform.position);
            Vector2 size = gameObject.GetComponent().sizeDelta;
            pgm.SetfxTransVisiable(true);
            pgm.SetMaskTarget(gameObject);
            pgm.SetShowFramePosAndSize(localPos, size, 0, gameObject);
            await pgm.ConfigLogic(802, delegate() { });
            pgm.SetFingerPos(localPos);
            pgm.SetFingerVisiable(true);
        }
        /// 
        /// 点空关闭
        /// 
        /// 
        public async CTask OnStep803(UnityEngine.Object obj)
        {
            pgm.StepInit();
            await pgm.ConfigLogic(803, delegate() { pgm.NextGuide(); });
        }
        public async CTask OnStepEnd(UnityEngine.Object obj)
        {
            pgm.StepInit();
            pgm.SetBlackBaseVisiable(false);
            ForceGuideOver();
        }
        /// 
        /// 引导完成
        /// 
        private async void ForceGuideOver()
        {
            pgm.CloseForceGuide();
            pgm.RestGuide();
            await UIManager.Instance.HideUIUIPanel();
            UIManager.Instance.HideUIUIPanel();
        }
    }
}