public void Tick(StoryInstance instance, long delta) { if (m_IsPaused) { return; } try { instance.StackVariables = StackVariables; m_IsInTick = true; while (m_CommandQueue.Count > 0) { IStoryCommand cmd = m_CommandQueue.Peek(); if (cmd.Execute(instance, delta, null, m_Arguments)) { break; } else { cmd.Reset(); m_CommandQueue.Dequeue(); } } if (m_CommandQueue.Count == 0) { m_IsTriggered = false; } } finally { m_IsInTick = false; } }
public void Tick(StoryInstance instance, StoryMessageHandler handler, long delta) { while (m_CommandQueue.Count > 0) { IStoryCommand cmd = m_CommandQueue.Peek(); if (cmd.Execute(instance, handler, delta, m_Iterator, m_Arguments)) { m_CompositeReentry = false; if (m_IsBreak || m_IsContinue || m_IsReturn) { ResetCommandQueue(); } break; } else { m_CompositeReentry = false; cmd.Reset(); m_CommandQueue.Dequeue(); if (m_IsBreak || m_IsContinue || m_IsReturn) { ResetCommandQueue(); break; } } } }
public void Tick(StoryInstance instance, StoryMessageHandler handler, long delta) { while (m_CommandQueue.Count > 0) { if (handler.IsSuspended || handler.CanSkip && GlobalVariables.Instance.IsStorySkipped) { break; } IStoryCommand cmd = m_CommandQueue.Peek(); if (cmd.Execute(instance, handler, delta, m_Iterator, m_Arguments)) { m_CompositeReentry = false; if (m_IsBreak || m_IsContinue || m_IsReturn) { ResetCommandQueue(); } break; } else { m_CompositeReentry = false; cmd.Reset(); if (m_CommandQueue.Count > 0) { m_CommandQueue.Dequeue(); } if (m_IsBreak || m_IsContinue || m_IsReturn) { ResetCommandQueue(); break; } } } }
protected override bool ExecCommand(StoryInstance instance, long delta, object iterator, object[] args) { bool ret = false; if (m_IfCommandQueue.Count == 0 && m_ElseCommandQueue.Count == 0 && !m_AlreadyExecute) { Evaluate(instance, iterator, args); bool isElse = true; for (int i = 0; i < m_Conditions.Count; ++i) { if (m_Conditions[i].Value != 0) { PrepareIf(i); isElse = false; break; } } if (isElse) { PrepareElse(); } m_AlreadyExecute = true; } if (m_IfCommandQueue.Count > 0) { while (m_IfCommandQueue.Count > 0) { IStoryCommand cmd = m_IfCommandQueue.Peek(); if (cmd.Execute(instance, delta, iterator, args)) { ret = true; break; } else { cmd.Reset(); m_IfCommandQueue.Dequeue(); } } } if (m_ElseCommandQueue.Count > 0) { while (m_ElseCommandQueue.Count > 0) { IStoryCommand cmd = m_ElseCommandQueue.Peek(); if (cmd.Execute(instance, delta, iterator, args)) { ret = true; break; } else { cmd.Reset(); m_ElseCommandQueue.Dequeue(); } } } return(ret); }
protected override bool ExecCommand(StoryInstance instance, long delta, object iterator, object[] args) { bool ret = true; while (ret) { if (m_CommandQueue.Count == 0 && !m_AlreadyExecute) { Evaluate(instance, iterator, args); if (m_Condition.Value != 0) { Prepare(); ++m_CurCount; ret = true; m_AlreadyExecute = true; } else { ret = false; } } else { while (m_CommandQueue.Count > 0) { IStoryCommand cmd = m_CommandQueue.Peek(); if (cmd.Execute(instance, delta, m_CurCount - 1, args)) { break; } else { cmd.Reset(); m_CommandQueue.Dequeue(); } } ret = true; if (m_CommandQueue.Count > 0) { break; } else { m_AlreadyExecute = false; } } } return(ret); }
public void Tick(StoryInstance instance, long delta) { while (m_queueCommandQueue.Count > 0) { IStoryCommand cmd = m_queueCommandQueue.Peek(); if (cmd.Execute(instance, delta)) { break; } else { cmd.Reset(); m_queueCommandQueue.Dequeue(); } } if (m_queueCommandQueue.Count == 0) { m_bIsTriggered = false; } }
protected override bool ExecCommand(StoryInstance instance, long delta, object iterator, object[] args) { bool ret = false; if (m_Stack.Count > 0) { StackElementInfo stackInfo = m_Stack.Peek(); instance.StackVariables = stackInfo.m_StackVariables; if (stackInfo.m_CommandQueue.Count == 0 && !stackInfo.m_AlreadyExecute) { Evaluate(instance, iterator, args); Prepare(stackInfo); stackInfo.m_AlreadyExecute = true; } if (stackInfo.m_CommandQueue.Count > 0) { while (stackInfo.m_CommandQueue.Count > 0) { IStoryCommand cmd = stackInfo.m_CommandQueue.Peek(); if (cmd.Execute(instance, delta, iterator, args)) { ret = true; break; } else { cmd.Reset(); stackInfo.m_CommandQueue.Dequeue(); } } } if (!ret) { PopStack(instance); stackInfo.m_AlreadyExecute = false; } } return(ret); }