public void StartNovel(NovelCommand.CommonData commonData = null, NovelCommand.CommonVariable commonVariable = null) { this.executer = new NovelExecuter(this.data); if (commonVariable == null) { commonVariable = new NovelCommand.CommonVariable() { currentIndex = 0 }; } if (commonData == null) { // Create Initial Common Data commonData = new NovelCommand.CommonData() { manager = this, view = this.view, data = this.data }; } StartCoroutine(RunCoroutine(commonData, commonVariable)); }
public IEnumerator RunCoroutine(NovelCommand.CommonVariable variable) { if (variable == null) { yield break; } if (this.commonData == null) { yield break; } this.commonVariable = variable; while (commonVariable.currentIndex < novelContentData.contentData.Count) { this.commonData.contentData = novelContentData.contentData[commonVariable.currentIndex]; // Try to create specific novel command actions Type commandType; if (dicNovelCommandType.TryGetValue(commonData.contentData.command, out commandType)) { command = Activator.CreateInstance(commandType) as NovelCommand.NovelCommandInterface; var coroutine = command.Do(commonData, commonVariable); yield return(coroutine); } commonVariable.currentIndex++; } yield break; }
private IEnumerator RunCoroutine(NovelCommand.CommonData commonData, NovelCommand.CommonVariable commonVariable) { yield return(executer.SetupCoroutine(commonData)); yield return(executer.RunCoroutine(commonVariable)); yield break; }