Phase9.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. using Common.Utility.CombatEvent;
  2. using Fort23.Core;
  3. using Fort23.UTool;
  4. using GameLogic.Combat;
  5. using GameLogic.Combat.CombatTool;
  6. using UnityEngine;
  7. using UnityEngine.UI;
  8. namespace Fort23.Mono.Phases
  9. {
  10. public class Phase9 : IGuideLogic
  11. {
  12. public PlayerGuideManager pgm;
  13. private bool once = false;
  14. public Phase9(PlayerGuideManager guideManager)
  15. {
  16. this.pgm = guideManager;
  17. once = true;
  18. }
  19. public override void Active()
  20. {
  21. base.Active();
  22. actionList.Add(OnStep901);
  23. actionList.Add(OnStep902);
  24. actionList.Add(OnStepEnd);
  25. }
  26. public override void Begin()
  27. {
  28. guideID = 9;
  29. guideIdx = -1;
  30. pgm.isForceDone = false;
  31. pgm.isTriggerDone = false;
  32. }
  33. public override void End()
  34. {
  35. }
  36. public override async CTask Guide()
  37. {
  38. if (actionList.Count > guideIdx)
  39. {
  40. pgm.ResetPlayerGuide();
  41. guideIdx++;
  42. SaveStep(guideIdx);
  43. await actionList[guideIdx](null);
  44. }
  45. else
  46. {
  47. LogTool.Error("没有引导了,强制结束。出错步骤,:" + pgm.curPhase + guideIdx);
  48. pgm.isForceDone = true;
  49. }
  50. }
  51. public override void LogicRelase()
  52. {
  53. actionList.Clear();
  54. }
  55. public override void LogicUpdate()
  56. {
  57. }
  58. private CTask ctask = null;
  59. /// <summary>
  60. /// 点击宝箱
  61. /// </summary>
  62. /// <param name="obj"></param>
  63. public async CTask OnStep901(UnityEngine.Object obj)
  64. {
  65. pgm.StepInit();
  66. pgm.SetOnClickMask(true);
  67. CombatEventManager.Instance.AddEventListener(CombatEventType.MagicWeaponCDFinish,
  68. MagicWeaponCDFinishEvent);
  69. ctask = CTask.Create();
  70. await ctask;
  71. pgm.SetOnClickMask(false);
  72. CombatController.currActiveCombat.isUpdate = false;
  73. GameObject gameObject = UIManager.Instance.GetComponent<CombatPanel>().magicWeapons[0].bg_hui.gameObject;
  74. Vector3 localPos = pgm.WorldPosToLocalPos(gameObject.transform.position);
  75. Vector2 size = gameObject.GetComponent<RectTransform>().sizeDelta;
  76. pgm.SetfxTransVisiable(true);
  77. pgm.SetMaskTarget(gameObject);
  78. pgm.SetShowFramePosAndSize(localPos, size, 0, gameObject);
  79. await pgm.ConfigLogic(901, delegate() { });
  80. pgm.SetFingerPos(localPos);
  81. pgm.SetFingerVisiable(true);
  82. }
  83. private void MagicWeaponCDFinishEvent(IEventData e)
  84. {
  85. ctask.SetResult();
  86. }
  87. /// <summary>
  88. /// 点十连抽
  89. /// </summary>
  90. /// <param name="obj"></param>
  91. public async CTask OnStep902(UnityEngine.Object obj)
  92. {
  93. CombatController.currActiveCombat.isUpdate = true;
  94. pgm.StepInit();
  95. pgm.SetOnClickMask(true);
  96. CombatEventManager.Instance.AddEventListener(CombatEventType.FaBaoDuiPingStart,
  97. FaBaoDuiPingStartEvent);
  98. await TimerComponent.Instance.WaitAsync(100);
  99. ctask = CTask.Create();
  100. await ctask;
  101. CombatController.currActiveCombat.isUpdate = false;
  102. pgm.SetOnClickMask(false);
  103. // GameObject gameObject = UIManager.Instance.GetComponent<BoxPanel>().oneButton.gameObject;
  104. // Vector3 localPos = pgm.WorldPosToLocalPos(gameObject.transform.position);
  105. // Vector2 size = gameObject.GetComponent<RectTransform>().sizeDelta;
  106. //
  107. // pgm.SetfxTransVisiable(true);
  108. // pgm.SetShowFramePosAndSize(localPos, size, 0, gameObject);
  109. await pgm.ConfigLogic(902, delegate() { pgm.NextGuide(); });
  110. }
  111. private void FaBaoDuiPingStartEvent(IEventData e)
  112. {
  113. ctask.SetResult();
  114. FaBaoDuiPingStartEventData faBaoDuiPingStartEventData = (FaBaoDuiPingStartEventData)e;
  115. Vector3 localPos =
  116. UIManager.Instance.CurrCustomCameraStack.camera.WorldToScreenPoint(faBaoDuiPingStartEventData
  117. .MagicWeaponCollisionInfo.a.dotPos);
  118. localPos = UIManager.Instance.UICamera.ScreenToWorldPoint(localPos);
  119. localPos = pgm.WorldPosToLocalPos(localPos);
  120. pgm.SetfxTransVisiable(true);
  121. pgm.SetShowFramePosAndSize(localPos, new Vector2(150, 150), 0);
  122. }
  123. public async CTask OnStepEnd(UnityEngine.Object obj)
  124. {
  125. CombatController.currActiveCombat.isUpdate = true;
  126. CombatEventManager.Instance.RemoveEventListener(CombatEventType.MagicWeaponCDFinish,
  127. MagicWeaponCDFinishEvent);
  128. CombatEventManager.Instance.RemoveEventListener(CombatEventType.FaBaoDuiPingStart,
  129. FaBaoDuiPingStartEvent);
  130. pgm.StepInit();
  131. pgm.SetBlackBaseVisiable(false);
  132. ForceGuideOver();
  133. }
  134. /// <summary>
  135. /// 引导完成
  136. /// </summary>
  137. private async void ForceGuideOver()
  138. {
  139. pgm.CloseForceGuide();
  140. pgm.RestGuide();
  141. await UIManager.Instance.HideUIUIPanel<GachaPanel>();
  142. UIManager.Instance.HideUIUIPanel<BoxPanel>();
  143. }
  144. }
  145. }