コード例 #1
0
        /// <summary>
        /// 跳过指定的和剩下的引导步骤
        /// </summary>
        /// <param name="guide_step"></param>
        public void SkipGuideStep(Guide.Step guide_step)
        {
            if (guide_step == null)
            {
                return;
            }

            guide_step.IsFinished = true;

            uint guide_id = guide_step.GuideId;
            var  guide    = m_DBGuide.GetGuideById(guide_id);

            if (guide != null)
            {
                guide.IsFinished = true;

                // 完成后是否自动战斗
                if (guide.AutoFightWhenFinish == true)
                {
                    InstanceManager.Instance.IsAutoFighting = true;
                }

                // 完成后是否播放剧情
                if (guide.TimelineWhenFinish > 0)
                {
                    TimelineManager.Instance.Play(guide.TimelineWhenFinish);
                }
            }

            SendFinishGuide(guide_step.GuideId, guide_step, 0);

            m_ListeningStepDict.Remove(guide_id);
            m_ForceStartStepDict.Remove(guide_id);

            ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_GUIDEEND, new CEventBaseArgs(guide_id));

            m_Dirty = true;
            m_IsPlayingGuideStep = false;
            m_PlayingGuideStep   = null;
            mPlayingGuide        = null;

            if (mWaitFinishCB != null && mWaitFinishGuideId == guide_id)
            {
                var cb = mWaitFinishCB;
                mWaitFinishCB      = null;
                mWaitFinishGuideId = 0;
                cb(guide_id);
            }
        }
コード例 #2
0
        void StartGuide(uint guide_id, bool once, WaitGuideFinishDelegate finish_cb)
        {
            var guide      = m_DBGuide.GetGuideById(guide_id);
            var guide_step = m_DBGuideStep.GetCurrentStep(guide_id);

            if (guide_step != null && guide != null)
            {
                guide_step.IsFinished = false;

                mWaitFinishGuideId = guide_id;
                mWaitFinishCB      = finish_cb;

                m_ForceStartStepDict[guide_id] = guide_step;
            }
            else if (finish_cb != null)
            {
                finish_cb(guide_id);
            }
        }
コード例 #3
0
        /// <summary>
        /// 完成指定的GuideStep
        /// </summary>
        /// <param name="guide_step"></param>
        void FinishGuideStep(Guide.Step guide_step)
        {
            if (guide_step == null)
            {
                return;
            }

            guide_step.IsFinished = true;

            if (guide_step.IsCanFinish)
            {
                SendFinishGuide(guide_step.GuideId, guide_step, 1);
            }

            // 如果是最后一步,则完成指引序列
            if (m_DBGuideStep.IsLastGuidesStep(guide_step))
            {
                uint guide_id = guide_step.GuideId;
                var  guide    = m_DBGuide.GetGuideById(guide_id);
                if (guide != null)
                {
                    guide.IsFinished = true;

                    // 完成后是否自动战斗
                    if (guide.AutoFightWhenFinish == true)
                    {
                        InstanceManager.Instance.IsAutoFighting = true;
                    }

                    // 完成后是否播放剧情
                    if (guide.TimelineWhenFinish > 0)
                    {
                        TimelineManager.Instance.Play(guide.TimelineWhenFinish);
                    }
                }

                // 可能IsCanFinish都没有设置
                SendFinishGuide(guide_step.GuideId, guide_step, 1);

                m_ListeningStepDict.Remove(guide_id);
                m_ForceStartStepDict.Remove(guide_id);

                ClientEventMgr.GetInstance().FireEvent((int)ClientEvent.CE_GUIDEEND, new CEventBaseArgs(guide_id));
                m_Dirty = true;
                m_IsPlayingGuideStep = false;
                m_PlayingGuideStep   = null;
                mPlayingGuide        = null;

                if (mWaitFinishCB != null && mWaitFinishGuideId == guide_id)
                {
                    var cb = mWaitFinishCB;

                    mWaitFinishCB      = null;
                    mWaitFinishGuideId = 0;

                    cb(guide_id);
                }
            }
            else// 更新下一步的指引步骤
            {
                m_IsPlayingGuideStep = false;
                m_PlayingGuideStep   = null;

                var new_guide_step = m_DBGuideStep.GetCurrentStep(guide_step.GuideId);
                if (new_guide_step != null)
                {
                    uint       new_guide_id = new_guide_step.GuideId;
                    Guide.Step old_step;
                    if (m_ForceStartStepDict.TryGetValue(new_guide_id, out old_step))
                    {
                        m_ForceStartStepDict[new_guide_id] = new_guide_step;
                    }
                    else if (m_ListeningStepDict.TryGetValue(new_guide_id, out old_step))
                    {
                        m_ListeningStepDict[new_guide_id] = new_guide_step;
                    }
                }
            }
        }
コード例 #4
0
 public void StartGuide(uint guide_id, WaitGuideFinishDelegate finish_cb)
 {
     StartGuide(guide_id, false, finish_cb);
 }