//
// 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);
}
}
}