// // Licensed under the MIT License. See LICENSE file in the project root for full license information. // namespace MUnique.OpenMU.Persistence.Initialization.Updates; using System.Runtime.InteropServices; using MUnique.OpenMU.DataModel.Configuration; using MUnique.OpenMU.DataModel.Entities; using MUnique.OpenMU.Persistence.Initialization.VersionSeasonSix.Events; using MUnique.OpenMU.PlugIns; /// /// Adds the Castle Siege configuration and persistent state to an existing Season 6 database. /// [PlugIn] [Display(Name = PlugInName, Description = PlugInDescription)] [Guid("CD201E33-37C9-4C85-95CC-16042B28E974")] public class AddCastleSiegeDataUpdatePlugIn : UpdatePlugInBase { /// /// The plug-in name. /// internal const string PlugInName = "Add Castle Siege data"; /// /// The plug-in description. /// internal const string PlugInDescription = "This update adds the Castle Siege configuration and persistent state."; /// public override string Name => PlugInName; /// public override string Description => PlugInDescription; /// public override UpdateVersion Version => UpdateVersion.AddCastleSiegeData; /// public override string DataInitializationKey => VersionSeasonSix.DataInitialization.Id; /// public override bool IsMandatory => true; /// public override DateTime CreatedAt => new(2026, 07, 28, 20, 0, 0, DateTimeKind.Utc); /// protected override async ValueTask ApplyAsync(IContext context, GameConfiguration gameConfiguration) { var initializer = new CastleSiegeInitializer(context, gameConfiguration); var configuration = initializer.InitializeConfiguration(); if (!(await context.GetAsync().ConfigureAwait(false)).Any()) { initializer.InitializeData(configuration); } } }