public override void ManualUpdate() { if (PlotMgr != null && PlotMgr.IsInPlotPause()) { return; } if (clearBuff.Count > 0) { clearBuff.Clear(); } foreach (var item in UpdateData) { var temp = item; for (int i = 0; i < temp.Layer; ++i) { temp[i].OnUpdate(); if (temp[i].IsTimeOver) { clearBuff.Add(temp[i]); } } } foreach (var item in clearBuff) { Remove(item); } }
public virtual TDBaseTalkFragment Start(string id, int index = 0) { CurData = TDLuaMgr.Get <TData>(id); if (CurData == null) { CLog.Error("没有找到对话:{0}", id); return(null); } CurTalkIndex = index; CurSelectOption = Const.STR_Inv; CurSelectOptionIndex = -1; if (IsHave()) { var ret = CurData.Fragments[CurTalkIndex]; Callback_OnStart?.Invoke(CurData, ret); Callback_OnTalk?.Invoke(CurData, ret, CurTalkIndex); OnTalk(CurData, ret, CurTalkIndex); OnStartTalk(CurData, ret); IsStartTalk = true; if (!PauseFlag) { PlotMgr.SetPlotPause(true); } PauseFlag = true; return(ret); } return(null); }
/// <summary> /// 开始一段旁白 /// isPause=暂停 /// isUnPauseOnEndTalk=对话结束后取消暂停 /// </summary> /// <param name="id"></param> public virtual NarrationFragment Start(string id) { CurData = TDLuaMgr.Get <TData>(id); if (CurData == null) { CLog.Error($"没有找到这个Plot:{id}"); return(null); } //如果剧情只显示一次,则返回 if (CurData.IsShowOnce && Showed.Contains(id)) { return(null); } CurNarrationIndex = 0; if (IsHave()) { Showed.Add(id); var ret = CurData.Fragments[CurNarrationIndex]; Callback_OnStartNarration?.Invoke(CurData, ret); Callback_OnChangeNarration?.Invoke(CurData); IsStartNarration = true; if (!PauseFlag) { BattleMgr.LockBattleStartFlow(true); PlotMgr?.SetPlotPause(true); } PauseFlag = true; return(ret); } return(null); }
public virtual void Stop() { var ret = CurNarrationFragment(); IsStartNarration = false; Callback_OnEndNarration?.Invoke(CurData, ret); Callback_OnChangeNarration?.Invoke(CurData); if (IsStartNarration) { return; } if (PauseFlag) { BattleMgr.LockBattleStartFlow(false); PlotMgr?.SetPlotPause(false); } //重置状态 PauseFlag = false; }
public virtual void Stop() { if (CurData != null) { IsStartTalk = false; //回调里面可能会重新开启对话 Callback_OnEnd?.Invoke(CurData, CurSelectOption, CurSelectOptionIndex); OnEndTalk(CurData, CurSelectOption, CurSelectOptionIndex); if (IsStartTalk) { return; } if (PauseFlag) { PlotMgr.SetPlotPause(false); } CurData = null; PauseFlag = false; } }
public virtual bool IsCanEndTurn(T unit) { if (PlotMgr != null && PlotMgr.IsInPlotPause()) { return(false); } if (IsLockTurnState.IsIn()) { return(false); } if (IsInEndTurn) { return(false); } if (!IsInTurn(unit)) { return(false); } if (CheckMustProcess(unit)) { return(false); } return(!IsPause); }