/// <summary> /// Builds a flex field value object /// </summary> /// <param name="dailyRoutineFunctionNameGenerator">Daily routine function name generator</param> /// <param name="npc">Npc to which the event belongs</param> /// <param name="exportEvent">Export event</param> /// <param name="project">Project</param> /// <param name="projectConfig">Project config</param> /// <param name="exportSettings">Export settings</param> /// <returns>Converted value</returns> public static async Task <ScribanExportDailyRoutineEvent> ConvertDailyRoutineEvent(IDailyRoutineFunctionNameGenerator dailyRoutineFunctionNameGenerator, KortistoNpc npc, KortistoNpcDailyRoutineEvent exportEvent, GoNorthProject project, MiscProjectConfig projectConfig, ExportSettings exportSettings) { ScribanExportDailyRoutineEvent convertedEvent = new ScribanExportDailyRoutineEvent(); convertedEvent.OriginalEvent = exportEvent; convertedEvent.EventId = exportEvent.EventId; convertedEvent.EarliestTime = ConvertEventTime(exportEvent.EarliestTime, projectConfig); convertedEvent.LatestTime = ConvertEventTime(exportEvent.LatestTime, projectConfig); convertedEvent.UnescapedMovementTarget = exportEvent.MovementTarget != null && !string.IsNullOrEmpty(exportEvent.MovementTarget.Name) ? exportEvent.MovementTarget.Name : null; convertedEvent.UnescapedMovementTargetExportName = exportEvent.MovementTarget != null && !string.IsNullOrEmpty(exportEvent.MovementTarget.ExportName) ? exportEvent.MovementTarget.ExportName : null; convertedEvent.UnescapedMovementTargetExportNameOrName = GetMovementTargetExportNameOrName(exportEvent.MovementTarget); convertedEvent.MovementTarget = EscapeValueIfExist(convertedEvent.UnescapedMovementTarget, exportSettings); convertedEvent.MovementTargetExportName = EscapeValueIfExist(convertedEvent.UnescapedMovementTargetExportName, exportSettings); convertedEvent.MovementTargetExportNameOrName = EscapeValueIfExist(convertedEvent.UnescapedMovementTargetExportNameOrName, exportSettings); convertedEvent.ScriptType = ScribanScriptUtil.ConvertScriptType(exportEvent.ScriptType); if (exportEvent.ScriptType != ExportConstants.ScriptType_None) { convertedEvent.ScriptName = exportEvent.ScriptName; convertedEvent.ScriptFunctionName = await dailyRoutineFunctionNameGenerator.GetNewDailyRoutineStepFunction(project.Id, npc.Id, exportEvent.EventId); } else { convertedEvent.ScriptName = null; convertedEvent.ScriptFunctionName = null; } convertedEvent.TargetState = !string.IsNullOrEmpty(exportEvent.TargetState) ? exportEvent.TargetState : null; convertedEvent.IsEnabledByDefault = exportEvent.EnabledByDefault; return(convertedEvent); }
/// <summary> /// Maps the daily routine data of an npc /// </summary> /// <param name="cachedDbAccess">Gecachter Datenzugriff</param> /// <param name="dailyRoutineFunctionNameGenerator">Daily routine function name generator</param> /// <param name="npc">Npc</param> /// <param name="dailyRoutine">Daily routine data</param> /// <returns>Mapped daily routine events</returns> public static async Task <List <ScribanExportDailyRoutineEvent> > MapNpcDailyRoutineEvents(IExportCachedDbAccess cachedDbAccess, IDailyRoutineFunctionNameGenerator dailyRoutineFunctionNameGenerator, KortistoNpc npc, List <KortistoNpcDailyRoutineEvent> dailyRoutine) { if (dailyRoutine == null || !dailyRoutine.Any()) { return(new List <ScribanExportDailyRoutineEvent>()); } GoNorthProject project = await cachedDbAccess.GetUserProject(); MiscProjectConfig projectConfig = await cachedDbAccess.GetMiscProjectConfig(); ExportSettings exportSettings = await cachedDbAccess.GetExportSettings(project.Id); List <ScribanExportDailyRoutineEvent> mappedEvents = new List <ScribanExportDailyRoutineEvent>(); foreach (KortistoNpcDailyRoutineEvent curEvent in dailyRoutine) { ScribanExportDailyRoutineEvent convertedEvent = await ConvertDailyRoutineEvent(dailyRoutineFunctionNameGenerator, npc, curEvent, project, projectConfig, exportSettings); mappedEvents.Add(convertedEvent); } return(mappedEvents); }