using Fort23.Core; using Fort23.UTool; using UnityEngine; using UnityEngine.UI; namespace Fort23.Mono.Phases { public class Phase4 : IGuideLogic { public PlayerGuideManager pgm; public BetterList dialogList = new BetterList(); private bool once = false; public Phase4(PlayerGuideManager guideManager) { this.pgm = guideManager; once = true; } public override void Active() { base.Active(); actionList.Add(OnStep401); actionList.Add(OnStep402); actionList.Add(OnStep403); actionList.Add(OnStep404); actionList.Add(OnStep405); actionList.Add(OnStep406); actionList.Add(OnStep407); actionList.Add(OnStep408); actionList.Add(OnStepEnd); } public override void Begin() { guideID = 4; 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 OnStep401(UnityEngine.Object obj) { pgm.StepInit(); GameObject gameObject = UIManager.Instance.GetComponent().Btn_GongFa.gameObject; Vector3 localPos = pgm.WorldPosToLocalPos(gameObject.transform.position); Vector2 size = gameObject.GetComponent().sizeDelta; localPos = new Vector2(-30, -755); size = new Vector2(78, 97); pgm.SetfxTransVisiable(true); pgm.SetMaskTarget(gameObject); pgm.SetShowFramePosAndSize(localPos, size, 0, gameObject); await pgm.ConfigLogic(401, delegate() { }); pgm.SetFingerPos(localPos); pgm.SetFingerVisiable(true); } /// /// 框选功法 /// /// public async CTask OnStep402(UnityEngine.Object obj) { pgm.StepInit(); await TimerComponent.Instance.WaitAsync(100); Vector2 size = new Vector2(735, 785); Vector3 localPos = new Vector2(0, -279); pgm.SetfxTransVisiable(true); pgm.SetShowFramePosAndSize(localPos, size, 0, null); await pgm.ConfigLogic(402, delegate() { pgm.NextGuide(); }); pgm.SetFingerPos(localPos); pgm.SetFingerVisiable(true); } /// /// 框选功法盘 /// /// public async CTask OnStep403(UnityEngine.Object obj) { pgm.StepInit(); await TimerComponent.Instance.WaitAsync(100); pgm.SetfxTransVisiable(true); Vector2 size = new Vector2(743, 690); Vector2 localPos = new Vector2(0, 461); pgm.SetShowFramePosAndSize(localPos, size, 0, null); await pgm.ConfigLogic(403, delegate() { pgm.NextGuide(); }); pgm.SetFingerPos(localPos); pgm.SetFingerVisiable(true); } /// /// 点击调整 /// /// public async CTask OnStep404(UnityEngine.Object obj) { pgm.StepInit(); await TimerComponent.Instance.WaitAsync(100); GameObject gameObject = UIManager.Instance.GetComponent().Btn_Setting.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(404, delegate() { }); pgm.SetFingerPos(localPos); pgm.SetFingerVisiable(true); } /// /// 点击第二个功法 /// /// public async CTask OnStep405(UnityEngine.Object obj) { pgm.StepInit(); await TimerComponent.Instance.WaitAsync(100); GameObject gameObject = UIManager.Instance.GetComponent()._skillWidgets[1].own; 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(405, delegate() { }); pgm.SetFingerPos(pgm.Setpos(localPos, size, gameObject)); pgm.SetFingerVisiable(true); } /// /// 对话 /// /// public async CTask OnStep406(UnityEngine.Object obj) { pgm.StepInit(); await TimerComponent.Instance.WaitAsync(100); await pgm.ConfigLogic(406, delegate() { pgm.NextGuide(); }); } /// /// 这是个{火}功法,把他放在功法盘{火}的附近,会优先释放 /// /// public async CTask OnStep407(UnityEngine.Object obj) { pgm.StepInit(); await TimerComponent.Instance.WaitAsync(100); GameObject gameObject = UIManager.Instance.GetComponent().allKongSkill[6].own; 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(407, delegate() { }); pgm.SetFingerPos(pgm.Setpos(localPos, size, gameObject)); pgm.SetFingerVisiable(true); } /// /// 功法调整完毕,点这里返回 /// /// public async CTask OnStep408(UnityEngine.Object obj) { pgm.StepInit(); await TimerComponent.Instance.WaitAsync(100); GameObject gameObject = UIManager.Instance.GetComponent().guanbi.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(408, delegate() { }); pgm.SetFingerPos(pgm.Setpos(localPos, size, gameObject)); pgm.SetFingerVisiable(true); } public async CTask OnStepEnd(UnityEngine.Object obj) { pgm.StepInit(); pgm.SetBlackBaseVisiable(false); ForceGuideOver(); } /// /// 引导完成 /// private void ForceGuideOver() { pgm.CloseForceGuide(); pgm.RestGuide(); } } }