예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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));
        }