Beispiel #1
0
        public virtual void Play(IScenarioContext context)
        {
            this.context = context;

            if (IsPause)
            {
                IsPause = false;

                if (scenarioItems[activeItem] != null)
                {
                    IContextableScenarioItem contextableItem = scenarioItems[activeItem] as IContextableScenarioItem;
                    if (contextableItem == null)
                    {
                        scenarioItems[activeItem].Play();
                    }
                    else
                    {
                        contextableItem.Play(context);
                    }
                }
            }
            else
            {
                IsPause = false;

                shouldBeInterropted   = false;
                processScenarioInvoke = ProcessScenario();
                SyncCode.Instance.StartCoroutine(processScenarioInvoke);
            }
        }
Beispiel #2
0
        private IEnumerator ProcessScenario()
        {
            started = true;

            for (activeItem = 0; activeItem < scenarioItems.Count; activeItem++)
            {
                if (scenarioItems[activeItem] != null)
                {
                    IContextableScenarioItem contextableItem = scenarioItems[activeItem] as IContextableScenarioItem;
                    if (null == contextableItem)
                    {
                        scenarioItems[activeItem].Play();
                    }
                    else
                    {
                        contextableItem.Play(context);
                    }

                    if (IsPause)
                    {
                        scenarioItems[activeItem].Pause();
                    }

                    if (!scenarioItems[activeItem].IsComplete())
                    {
                        yield return(SyncCode.Instance.WaitOperations(scenarioItems[activeItem]));
                    }
                }
                else
                {
                    Debug.LogWarning("Null item in scenario");
                    if (callBack != null)
                    {
                        Debug.LogWarning("Callback is " + callBack.GetCallbackMethodName());
                    }
                }

                while (IsPause)
                {
                    yield return(null);
                }

                if (IsComplete())
                {
                    break;
                }
            }
            activeItem = 0;

            onCameToEnd(false);
            processScenarioInvoke = null;
        }