public SequencerManager() { m_RenderSystem = Engine.RareEngine.Instance().GetRenderSystem(); //任务触发 Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.TASK_DONE, OnEvent); Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.TASK_ACCEPT, OnEvent); Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.TASK_CANSUBMIT, OnEvent); Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.CHAPTER_EFFECT_END, OnChapterEnd); //table.SequencerData List <table.SequencerData> tableList = GameTableManager.Instance.GetTableList <table.SequencerData>(); for (int i = 0; i < tableList.Count; i++) { table.SequencerData data = tableList[i]; switch (data.TriggerType) { case (int)TriggerType.task: m_TaskTriggerType.Add(data); break; case (int)TriggerType.chapterEnd: m_ChapterType.Add(data); break; } } List <table.ChapterDabaBase> lstchapter = GameTableManager.Instance.GetTableList <table.ChapterDabaBase>(); table.ChapterDabaBase database = null; for (int i = 0, imax = lstchapter.Count; i < imax; i++) { database = lstchapter[i]; switch ((TriggerType)database.TriggerType) { case TriggerType.task: m_lstChapterTaskTrigger.Add(database); break; default: break; } } }
// ID播放 public void PlaySequencer(int nID) { for (int i = 0; i < m_TaskTriggerType.Count; i++) { table.SequencerData data = m_TaskTriggerType[i]; if (data.ID == nID) { PlaySequencer(data.SequencerFile); return; } } for (int i = 0; i < m_ChapterType.Count; i++) { table.SequencerData data = m_ChapterType[i]; if (data.ID == nID) { PlaySequencer(data.SequencerFile); return; } } }
private void OnChapterEnd(int nEventId, object param) { if (nEventId == (int)Client.GameEventID.CHAPTER_EFFECT_END) { uint nChapter = (uint)param; table.SequencerData database = null; for (int i = 0; i < m_ChapterType.Count; i++) { database = m_ChapterType[i]; if (database.Paramer1 == 1) // 章节结束触发 { if (database.Paramer2 == nChapter) //章节id { m_SequencerData = database; SequencerManager.Instance().PlaySequencer(m_SequencerData.SequencerFile); return; } } } } }
//正常播放完成 public void PlaybackFinished(WellFired.USSequencer sequencer) { m_IsPlay = false; if (m_SequencerCamera != null) { GameObject obj = GameObject.Find("MainCamera"); Camera camera = obj.GetComponent <Camera>(); if (camera != m_SequencerCamera) { camera.enabled = true; } } m_SequencerCamera = null; m_SequencerData = null; // 取消回调 if (sequencer != null) { sequencer.PlaybackFinished -= this.PlaybackFinished; sequencer.BeforeUpdate -= this.BeforeUpdate; } try { //显示npc Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es != null) { es.ShowEntity(true); } //删除剧情gameobject if (m_SequencerGameObject != null) { GameObject.Destroy(m_SequencerGameObject); m_SequencerGameObject = null; } Debug.Log("清理剧情对象"); //清理剧情对象 ClearSequencerTempObject(); //打开声音 Client.ClientGlobal.Instance().MuteGameSound(false); } catch { goto Exit0; } Exit0: //隐藏提示 TipsManager.Instance.EnableTips(true); //DataManager.Manager<UIPanelManager>().ShowStoryCachePanel(); Debug.Log("剧情结束显示UI"); RoleStateBarManager.ShowHeadStatus(); //剧情结束隐藏黑边 DataManager.Manager <UIPanelManager>().HideStory(); Debug.Log("剧情结束隐藏黑边"); Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.STORY_PLAY_OVER, null); //却换到原场景 Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (m_MapID != 0) { // 剧情播放完毕加载原场景 table.MapDataBase data = GameTableManager.Instance.GetTableItem <table.MapDataBase>(m_MapID); if (data == null) { return; } table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(data.dwResPath); if (resDB == null) { return; } if (rs != null) { string str = resDB.strPath; Engine.IScene scene = rs.EnterScene(ref str, SequencerManager.Instance()); if (scene != null) { ///加载场景 SequencerManager.Instance().Pause(); scene.StartLoad(Vector3.one); } } m_MapID = 0; } }
private void OnEvent(int nEventId, object param) { if (nEventId == (int)Client.GameEventID.TASK_DONE) { //完成任务 Client.stTaskDone td = (Client.stTaskDone)param; table.ChapterDabaBase database = null; bool flag = false; for (int i = 0, imax = m_lstChapterTaskTrigger.Count; i < imax; i++) { database = m_lstChapterTaskTrigger[i]; if (database.Paramer2 == td.taskid) { if (database.Paramer1 == 2) { PlayChapterEffect(database); return; } } } for (int i = 0; i < m_TaskTriggerType.Count; i++) { table.SequencerData data = m_TaskTriggerType[i]; if (data.Paramer1 == 2) { if (data.Paramer2 == td.taskid) { m_SequencerData = data; SequencerManager.Instance().PlaySequencer(m_SequencerData.SequencerFile); return; } } } } else if ((int)Client.GameEventID.TASK_ACCEPT == nEventId) { //接受任务 uint taskid = (uint)param; table.ChapterDabaBase database = null; for (int i = 0, imax = m_lstChapterTaskTrigger.Count; i < imax; i++) { database = m_lstChapterTaskTrigger[i]; if (database.Paramer2 == taskid) { if (database.Paramer1 == 1) { PlayChapterEffect(database); return; } } } for (int i = 0; i < m_TaskTriggerType.Count; i++) { table.SequencerData data = m_TaskTriggerType[i]; // 这个剧情是接受任务触发 if (data.Paramer1 == 1) { if (data.Paramer2 == taskid) { m_SequencerData = data; SequencerManager.Instance().PlaySequencer(m_SequencerData.SequencerFile); return; } } } } else if ((int)Client.GameEventID.TASK_CANSUBMIT == nEventId) { //提交任务 Client.stTaskCanSubmit cs = (Client.stTaskCanSubmit)param; table.ChapterDabaBase database = null; for (int i = 0, imax = m_lstChapterTaskTrigger.Count; i < imax; i++) { database = m_lstChapterTaskTrigger[i]; if (database.Paramer2 == cs.taskid) { if (database.Paramer1 == 3) { PlayChapterEffect(database); return; } } } for (int i = 0; i < m_TaskTriggerType.Count; i++) { table.SequencerData data = m_TaskTriggerType[i]; if (data.Paramer1 == 3) { if (data.Paramer2 == cs.taskid) { m_SequencerData = data; SequencerManager.Instance().PlaySequencer(m_SequencerData.SequencerFile); return; } } } } }