/// <summary> /// Builds the movement state values /// </summary> /// <param name="data">Parsed Export Data</param> /// <param name="actionCode">Action code to fill</param> /// <returns>Filled action code</returns> private string BuildMovementState(MoveNpcToNpcActionData data, string actionCode) { actionCode = ExportUtil.RenderPlaceholderIfTrue(actionCode, Placeholder_HasMovementState_Start, Placeholder_HasMovementState_End, string.IsNullOrEmpty(data.MovementState)); actionCode = ExportUtil.RenderPlaceholderIfTrue(actionCode, Placeholder_HasNoMovementState_Start, Placeholder_HasNoMovementState_End, !string.IsNullOrEmpty(data.MovementState)); actionCode = ExportUtil.BuildPlaceholderRegex(Placeholder_MovementState).Replace(actionCode, data.MovementState != null ? data.MovementState : string.Empty); return(actionCode); }
/// <summary> /// Fills the placeholders /// </summary> /// <param name="template">Template to use</param> /// <param name="errorCollection">Error Collection</param> /// <param name="parsedData">Parsed config data</param> /// <param name="npc">Npc to move</param> /// <param name="targetNpc">Target npc</param> /// <param name="directContinueFunction">Direct continue function</param> /// <param name="flexFieldObject">Flex field object to which the dialog belongs</param> /// <param name="curStep">Current step that is rendered</param> /// <param name="nextStep">Next step that is being rendered</param> /// <param name="exportSettings">Export Settings</param> /// <param name="stepRenderer">Action Step renderer</param> /// <returns>Filled placeholders</returns> protected override async Task <string> FillPlaceholders(ExportTemplate template, ExportPlaceholderErrorCollection errorCollection, MoveNpcToNpcActionData parsedData, KortistoNpc npc, KortistoNpc targetNpc, string directContinueFunction, FlexFieldObject flexFieldObject, ExportDialogData curStep, ExportDialogData nextStep, ExportSettings exportSettings, IActionStepRenderer stepRenderer) { ScribanMoveNpcToNpcActionBaseData actionData; if (_isTeleport) { actionData = new ScribanMoveNpcToNpcActionBaseData(); } else { ScribanMoveNpcToNpcActionData walkData = new ScribanMoveNpcToNpcActionData(); walkData.MovementState = !string.IsNullOrEmpty(parsedData.MovementState) ? ExportUtil.EscapeCharacters(parsedData.MovementState, exportSettings.EscapeCharacter, exportSettings.CharactersNeedingEscaping, exportSettings.NewlineCharacter) : null; walkData.UnescapedMovementState = parsedData.MovementState; walkData.DirectContinueFunction = !string.IsNullOrEmpty(directContinueFunction) ? directContinueFunction : null; actionData = walkData; } actionData.Npc = FlexFieldValueCollectorUtil.BuildFlexFieldValueObject <ScribanExportNpc>(null, null, npc, exportSettings, errorCollection); actionData.Npc.IsPlayer = npc.IsPlayerNpc; actionData.TargetNpc = FlexFieldValueCollectorUtil.BuildFlexFieldValueObject <ScribanExportNpc>(null, null, targetNpc, exportSettings, errorCollection); actionData.TargetNpc.IsPlayer = targetNpc.IsPlayerNpc; return(await ScribanActionRenderingUtil.FillPlaceholders(_cachedDbAccess, errorCollection, template.Code, actionData, flexFieldObject, curStep, nextStep, _scribanLanguageKeyGenerator, stepRenderer)); }
/// <summary> /// Fills the placeholders /// </summary> /// <param name="template">Template to use</param> /// <param name="errorCollection">Error Collection</param> /// <param name="parsedData">Parsed config data</param> /// <param name="npc">Npc to move</param> /// <param name="targetNpc">Target npc</param> /// <param name="directContinueFunction">Direct continue function</param> /// <param name="flexFieldObject">Flex field object to which the dialog belongs</param> /// <param name="curStep">Current step that is rendered</param> /// <param name="nextStep">Next step that is being rendered</param> /// <param name="exportSettings">Export Settings</param> /// <param name="stepRenderer">Action Step renderer</param> /// <returns>Filled placeholders</returns> protected override async Task <string> FillPlaceholders(ExportTemplate template, ExportPlaceholderErrorCollection errorCollection, MoveNpcToNpcActionData parsedData, KortistoNpc npc, KortistoNpc targetNpc, string directContinueFunction, FlexFieldObject flexFieldObject, ExportDialogData curStep, ExportDialogData nextStep, ExportSettings exportSettings, IActionStepRenderer stepRenderer) { ExportObjectData flexFieldExportData = new ExportObjectData(); flexFieldExportData.ExportData.Add(ExportConstants.ExportDataObject, npc); flexFieldExportData.ExportData.Add(ExportConstants.ExportDataObjectType, ExportConstants.ExportObjectTypeNpc); _flexFieldPlaceholderResolver.SetErrorMessageCollection(errorCollection); string actionCode = _flexFieldPlaceholderResolver.FillPlaceholders(template.Code, flexFieldExportData).Result; if (!_isTeleport) { actionCode = BuildDirectContinueFunction(directContinueFunction, actionCode); actionCode = BuildMovementState(parsedData, actionCode); } ExportObjectData flexFieldTargetExportData = new ExportObjectData(); flexFieldTargetExportData.ExportData.Add(ExportConstants.ExportDataObject, targetNpc); flexFieldTargetExportData.ExportData.Add(ExportConstants.ExportDataObjectType, ExportConstants.ExportObjectTypeNpc); _flexFieldTargetPlaceholderResolver.SetErrorMessageCollection(errorCollection); actionCode = _flexFieldTargetPlaceholderResolver.FillPlaceholders(actionCode, flexFieldTargetExportData).Result; return(await stepRenderer.ReplaceBasePlaceholders(errorCollection, actionCode, curStep, nextStep, flexFieldObject)); }