using Mapster; using Plugin.Database.Bazaar; using Plugin.Database.Entities.Account; using Plugin.Database.Entities.PlayersData; using Plugin.Database.Entities.ServerData; using Plugin.Database.Families; using Plugin.Database.Mail; using Plugin.Database.Warehouse; using WingsAPI.Data.Account; using WingsAPI.Data.Bazaar; using WingsAPI.Data.Character; using WingsAPI.Data.Families; using WingsAPI.Data.TimeSpace; using WingsEmu.DTOs.Mails; using WingsEmu.DTOs.Relations; using WingsEmu.DTOs.Skills; using WingsEmu.Game; using WingsEmu.Game.Families; using WingsEmu.Game.Skills; using WingsEmu.Game.Warehouse; namespace Plugin.Database.Mapping { public static class GameMappingRules { public static void InitializeMapping() { TypeAdapterConfig.GlobalSettings.AllowImplicitDestinationInheritance = true; TypeAdapterConfig.GlobalSettings.Default.Settings.Unflattening = false; TypeAdapterConfig.NewConfig() .ConstructUsing(s => new Account()); TypeAdapterConfig.NewConfig() .Include() .Ignore( s => s.Character, s => s.AccountPenalties, s => s.AccountBans ); TypeAdapterConfig.NewConfig() .Include() .Ignore(s => s.Account); TypeAdapterConfig.NewConfig() .ConstructUsing(s => new WarehouseItem()); // character TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig() .Ignore(s => s.AccountEntity, s => s.SentNotes, s => s.ReceivedNotes, s => s.ReceivedMails, s => s.FamilyCharacter, s => s.BazaarItem, s => s.SourceRelations, s => s.TargetRelations); TypeAdapterConfig .NewConfig() .Compile(); // DTO -> Entity TypeAdapterConfig .NewConfig() .Compile(); // Entity -> DTO TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig(); // mails TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig(); // notes TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig(); // family TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig() .Ignore( s => s.FamilyCharacters, s => s.FamilyLogs ) .Ignore( s => s.FamilyCharacters, s => s.FamilyLogs ); TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig() .ConstructUsing(s => new FamilyMembership()); TypeAdapterConfig.NewConfig() .Ignore( s => s.DbCharacter, s => s.Family ) .Include() .Ignore( s => s.DbCharacter, s => s.Family ); TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig(); // penalty TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig(); // bans TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig(); TypeAdapterConfig.NewConfig(); TypeAdapterConfig.GlobalSettings.Compile(); } } }