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); } }
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; }