using Common.Utility.CombatEvent; using Fort23.Core; using Fort23.UTool; using GameLogic.Combat; using GameLogic.Combat.CombatTool; using UnityEngine; using UnityEngine.UI; namespace Fort23.Mono.Phases { public class Phase9 : IGuideLogic { public PlayerGuideManager pgm; private bool once = false; public Phase9(PlayerGuideManager guideManager) { this.pgm = guideManager; once = true; } public override void Active() { base.Active(); actionList.Add(OnStep901); actionList.Add(OnStep902); actionList.Add(OnStepEnd); } public override void Begin() { guideID = 9; 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() { } private CTask ctask = null; /// /// 点击宝箱 /// /// public async CTask OnStep901(UnityEngine.Object obj) { pgm.StepInit(); pgm.SetOnClickMask(true); CombatEventManager.Instance.AddEventListener(CombatEventType.MagicWeaponCDFinish, MagicWeaponCDFinishEvent); ctask = CTask.Create(); await ctask; pgm.SetOnClickMask(false); CombatController.currActiveCombat.isUpdate = false; GameObject gameObject = UIManager.Instance.GetComponent().magicWeapons[0].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(901, delegate() { }); pgm.SetFingerPos(localPos); pgm.SetFingerVisiable(true); } private void MagicWeaponCDFinishEvent(IEventData e) { ctask.SetResult(); } /// /// 点十连抽 /// /// public async CTask OnStep902(UnityEngine.Object obj) { CombatController.currActiveCombat.isUpdate = true; pgm.StepInit(); pgm.SetOnClickMask(true); CombatEventManager.Instance.AddEventListener(CombatEventType.FaBaoDuiPingStart, FaBaoDuiPingStartEvent); await TimerComponent.Instance.WaitAsync(100); ctask = CTask.Create(); await ctask; CombatController.currActiveCombat.isUpdate = false; pgm.SetOnClickMask(false); // GameObject gameObject = UIManager.Instance.GetComponent().oneButton.gameObject; // Vector3 localPos = pgm.WorldPosToLocalPos(gameObject.transform.position); // Vector2 size = gameObject.GetComponent().sizeDelta; // // pgm.SetfxTransVisiable(true); // pgm.SetShowFramePosAndSize(localPos, size, 0, gameObject); await pgm.ConfigLogic(902, delegate() { pgm.NextGuide(); }); } private void FaBaoDuiPingStartEvent(IEventData e) { ctask.SetResult(); FaBaoDuiPingStartEventData faBaoDuiPingStartEventData = (FaBaoDuiPingStartEventData)e; Vector3 localPos = UIManager.Instance.CurrCustomCameraStack.camera.WorldToScreenPoint(faBaoDuiPingStartEventData .MagicWeaponCollisionInfo.a.dotPos); localPos = UIManager.Instance.UICamera.ScreenToWorldPoint(localPos); localPos = pgm.WorldPosToLocalPos(localPos); pgm.SetfxTransVisiable(true); pgm.SetShowFramePosAndSize(localPos, new Vector2(150, 150), 0); } public async CTask OnStepEnd(UnityEngine.Object obj) { CombatController.currActiveCombat.isUpdate = true; CombatEventManager.Instance.RemoveEventListener(CombatEventType.MagicWeaponCDFinish, MagicWeaponCDFinishEvent); CombatEventManager.Instance.RemoveEventListener(CombatEventType.FaBaoDuiPingStart, FaBaoDuiPingStartEvent); pgm.StepInit(); pgm.SetBlackBaseVisiable(false); ForceGuideOver(); } /// /// 引导完成 /// private async void ForceGuideOver() { pgm.CloseForceGuide(); pgm.RestGuide(); await UIManager.Instance.HideUIUIPanel(); UIManager.Instance.HideUIUIPanel(); } } }