| | |
| | | |
| | | static bool IsCompleteDialogue = false; |
| | | |
| | | SFXController m_CompleteSfx1; |
| | | List<SFXController> m_FlyControllers = new List<SFXController>(); |
| | | |
| | | DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } |
| | | |
| | | public override void Initialize()
|
| | |
| | | GlobalTimeEvent.Instance.secondEvent += PerSecond;
|
| | | BossShowModel.Instance.bossShowCompletedEvent -= BossShowCompletedEvent;
|
| | | BossShowModel.Instance.bossShowCompletedEvent += BossShowCompletedEvent;
|
| | | dungeonModel.onDungeonResultEvent += OnDungeonResultEvent;
|
| | | } |
| | | |
| | | protected override void OnStageLoadFinish()
|
| | |
| | | PlayerDatas.Instance.hero.Behaviour.StartHandupAI();
|
| | | }
|
| | |
|
| | | private void OnDungeonResultEvent()
|
| | | {
|
| | | UnInitializeSFX();
|
| | |
|
| | | m_CompleteSfx1 = SFXPlayUtility.Instance.Play(20045, NpcBornPosition, Vector3.forward);
|
| | |
|
| | | if (m_Npc != null)
|
| | | {
|
| | | GAMgr.Instance.ServerDie(m_Npc.ServerInstID);
|
| | | GAMgr.Instance.Release(m_Npc);
|
| | | m_Npc = null;
|
| | | }
|
| | |
|
| | | StartCoroutine(Co_PlayFly());
|
| | | }
|
| | |
|
| | | IEnumerator Co_PlayFly()
|
| | | {
|
| | | yield return WaitingForSecondConst.WaitMS800;
|
| | | var heroPos = PlayerDatas.Instance.hero.Pos;
|
| | | for (int i = 0; i < 5; i++)
|
| | | {
|
| | | var startPos = NpcBornPosition + Vector3.up * 0.5f;
|
| | | var endPos = heroPos + Vector3.up * 0.5f;
|
| | | startPos.y = heroPos.y;
|
| | |
|
| | | m_FlyControllers.Add(SFXPlayUtility.Instance.Play(20046, startPos, Vector3.forward));
|
| | | var bezier = m_FlyControllers[i].AddMissingComponent<BezierMove>();
|
| | |
|
| | | m_FlyControllers[i].gameObject.SetLayer(LayerUtility.DefaultLayer, true);
|
| | |
|
| | | var axis = (endPos - startPos).normalized;
|
| | |
|
| | | var center = (startPos + endPos) / 2 - axis * 0.3f;
|
| | | var point = center + Vector3.up * 4;
|
| | |
|
| | | point = Quaternion.AngleAxis((i - 2) * 30, axis) * (point - center) + center;
|
| | |
|
| | | bezier.duration = 1f;
|
| | | bezier.Begin(startPos, point, endPos, null);
|
| | | }
|
| | | }
|
| | |
|
| | | private void PerSecond()
|
| | | {
|
| | | var hero = PlayerDatas.Instance.hero;
|
| | |
| | | Clock.Stop(fightEndClock);
|
| | | fightEndClock = null;
|
| | | }
|
| | |
|
| | | UnInitializeSFX();
|
| | | } |
| | | |
| | | void UnInitializeSFX()
|
| | | {
|
| | | if (m_CompleteSfx1 != null)
|
| | | {
|
| | | SFXPlayUtility.Instance.Release(m_CompleteSfx1);
|
| | | m_CompleteSfx1 = null;
|
| | | }
|
| | |
|
| | | if (m_FlyControllers.Count > 0)
|
| | | {
|
| | | foreach (var sfx in m_FlyControllers)
|
| | | {
|
| | | var bezier = sfx.GetComponent<BezierMove>();
|
| | | if (bezier != null)
|
| | | {
|
| | | DestroyImmediate(bezier);
|
| | | }
|
| | | SFXPlayUtility.Instance.Release(sfx);
|
| | | }
|
| | | m_FlyControllers.Clear();
|
| | | }
|
| | | } |
| | | |
| | | public override void UnInitialize()
|
| | |
| | |
|
| | | UnInitializedNpc();
|
| | |
|
| | | StopAllCoroutines();
|
| | |
|
| | | NPCInteractProcessor.s_NpcInteractEvent -= OnNpcTalkEvent;
|
| | | NormalDialogueWin.onDialogueComplete -= OnDialogueComplete;
|
| | | GlobalTimeEvent.Instance.secondEvent -= PerSecond;
|
| | | BossShowModel.Instance.bossShowCompletedEvent -= BossShowCompletedEvent; |
| | | BossShowModel.Instance.bossShowCompletedEvent -= BossShowCompletedEvent;
|
| | | dungeonModel.onDungeonResultEvent -= OnDungeonResultEvent;
|
| | | }
|
| | | #if UNITY_EDITOR
|
| | | private void OnGUI()
|
| | | {
|
| | | if (GUILayout.Button("Test"))
|
| | | {
|
| | | OnDungeonResultEvent();
|
| | | }
|
| | | }
|
| | | #endif
|
| | | } |