/// <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); } }
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); } }
/// <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; } } } }
public void StartGuide(uint guide_id, WaitGuideFinishDelegate finish_cb) { StartGuide(guide_id, false, finish_cb); }