Ejemplo n.º 1
0
        /// <summary>
        /// Renders a daily routine event node graph
        /// </summary>
        /// <param name="functions">Functions array to fill</param>
        /// <param name="scriptNodeGraph">Node graph to render</param>
        /// <param name="flexFieldObject">Npc to which the events belong</param>
        /// <param name="rootDailyRoutineFunction">Root daily routine function to fill</param>
        /// <returns>Task</returns>
        private async Task RenderDailyRoutineEventNodeGraph(List <DailyRoutineFunction> functions, NodeGraphSnippet scriptNodeGraph, FlexFieldObject flexFieldObject, DailyRoutineFunction rootDailyRoutineFunction)
        {
            _nodeGraphParser.SetErrorCollection(_errorCollection);
            ExportDialogData exportData = _nodeGraphParser.ParseNodeGraph(scriptNodeGraph);

            if (exportData == null)
            {
                return;
            }

            exportData = await _nodeGraphFunctionGenerator.GenerateFunctions(flexFieldObject.ProjectId, flexFieldObject.Id, exportData, _errorCollection);

            ExportDialogFunction rootFunction = new ExportDialogFunction(exportData);

            AddNodesToFunction(rootFunction, exportData);
            List <ExportDialogFunction> additionalFunctions = ExtractAdditionalFunctions(exportData);

            rootDailyRoutineFunction.Code = await RenderDialogStepList(rootFunction.FunctionSteps, flexFieldObject);

            foreach (ExportDialogFunction curAdditionalFunction in additionalFunctions)
            {
                DailyRoutineFunction additionalFunction = new DailyRoutineFunction();
                additionalFunction.FunctionName      = curAdditionalFunction.RootNode.DialogStepFunctionName;
                additionalFunction.ParentPreviewText = await BuildFunctionParentPreview(curAdditionalFunction, flexFieldObject);

                string functionContent = await RenderDialogStepList(curAdditionalFunction.FunctionSteps, flexFieldObject);

                additionalFunction.Code = functionContent;

                functions.Add(additionalFunction);
            }
        }