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