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;
             }
         }
     }
 }
Esempio n. 3
0
 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;
             }
         }
     }
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
 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;
     }
 }
Esempio n. 7
0
        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);
        }