/// <summary> /// Builds an export dailog /// </summary> /// <param name="parsedDialog">Parsed dialog</param> /// <param name="inputNpc">Input npc</param> /// <returns>Export dialog</returns> private async Task <ScribanExportDialog> BuildExportDialog(ExportDialogData parsedDialog, KortistoNpc inputNpc) { if (parsedDialog == null) { return(null); } List <ExportDialogFunctionCode> steps = await _dialogRenderer.RenderDialogSteps(parsedDialog, inputNpc); ScribanExportDialog exportDialog = new ScribanExportDialog(); exportDialog.InitialFunction = new ScribanExportDialogFunction(steps.FirstOrDefault()); exportDialog.AdditionalFunctions = steps.Skip(1).Select(s => new ScribanExportDialogFunction(s)).ToList(); exportDialog.AllFunctions = steps.Select(s => new ScribanExportDialogFunction(s)).ToList(); return(exportDialog); }
/// <summary> /// Collects the values for an export /// </summary> /// <param name="templateType">Template type</param> /// <param name="parsedTemplate">Parsed scriban template</param> /// <param name="scriptObject">Scriban script object to fill</param> /// <param name="data">Export Data</param> /// <returns>Task</returns> public override async Task CollectValues(TemplateType templateType, Template parsedTemplate, ScriptObject scriptObject, ExportObjectData data) { KortistoNpc inputNpc = data.ExportData[ExportConstants.ExportDataObject] as KortistoNpc; if (inputNpc == null) { return; } _languageKeyGenerator.SetErrorCollection(_errorCollection); GoNorthProject project = await _exportCachedDbAccess.GetUserProject(); TaleDialog dialog = await _taleDbAccess.GetDialogByRelatedObjectId(inputNpc.Id); ExportDialogData parsedDialog = await ParseDialog(inputNpc, project, dialog); ScribanExportDialog exportDialog = await BuildExportDialog(parsedDialog, inputNpc); scriptObject.AddOrUpdate(ExportConstants.ScribanDialogKey, exportDialog); scriptObject.AddOrUpdate(DialogFunctionRenderer.DialogFunctionName, new DialogFunctionRenderer(_templatePlaceholderResolver, _exportCachedDbAccess, _defaultTemplateProvider, _errorCollection, data)); }