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));
    }
示例#2
0
    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;
    }