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();
}
}
}