Beispiel #1
0
    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;
            }
        }
    }
Beispiel #2
0
 // 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;
         }
     }
 }
Beispiel #3
0
 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;
                 }
             }
         }
     }
 }
Beispiel #4
0
    //正常播放完成
    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;
        }
    }
Beispiel #5
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;
                    }
                }
            }
        }
    }