using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using PhoenixLib.Caching; using PhoenixLib.Configuration; using PhoenixLib.DAL.Redis.Locks; using WingsAPI.Plugins; using WingsEmu.Game; using WingsEmu.Game.Act4.Configuration; using WingsEmu.Game.Algorithm; using WingsEmu.Game.Arena; using WingsEmu.Game.Battle; using WingsEmu.Game.Battle.Managers; using WingsEmu.Game.Buffs; using WingsEmu.Game.Characters; using WingsEmu.Game.Compliments; using WingsEmu.Game.Configurations; using WingsEmu.Game.Entities; using WingsEmu.Game.Features; using WingsEmu.Game.GameEvent; using WingsEmu.Game.Groups; using WingsEmu.Game.Inventory; using WingsEmu.Game.Items; using WingsEmu.Game.Managers; using WingsEmu.Game.Managers.ServerData; using WingsEmu.Game.Managers.StaticData; using WingsEmu.Game.Maps; using WingsEmu.Game.Mates; using WingsEmu.Game.Miniland; using WingsEmu.Game.Relations; using WingsEmu.Game.Skills; using WingsEmu.Game.SnackFood; using WingsEmu.Plugins.BasicImplementations.Algorithms; using WingsEmu.Plugins.BasicImplementations.Arena; using WingsEmu.Plugins.BasicImplementations.Bazaar; using WingsEmu.Plugins.BasicImplementations.Compliments; using WingsEmu.Plugins.BasicImplementations.DbServer; using WingsEmu.Plugins.BasicImplementations.Entities; using WingsEmu.Plugins.BasicImplementations.Event.Items; using WingsEmu.Plugins.BasicImplementations.Factories; using WingsEmu.Plugins.BasicImplementations.ForbiddenNames; using WingsEmu.Plugins.BasicImplementations.InterChannel; using WingsEmu.Plugins.BasicImplementations.Inventory; using WingsEmu.Plugins.BasicImplementations.ItemUsage; using WingsEmu.Plugins.BasicImplementations.Mail; using WingsEmu.Plugins.BasicImplementations.Managers; using WingsEmu.Plugins.BasicImplementations.Managers.StaticData; using WingsEmu.Plugins.BasicImplementations.Miniland; using WingsEmu.Plugins.BasicImplementations.ServerConfigs; using WingsEmu.Plugins.BasicImplementations.ServerConfigs.ImportObjects.Drops; using WingsEmu.Plugins.BasicImplementations.ServerConfigs.ImportObjects.ItemBoxes; using WingsEmu.Plugins.BasicImplementations.ServerConfigs.ImportObjects.Maps; using WingsEmu.Plugins.BasicImplementations.ServerConfigs.ImportObjects.Monsters; using WingsEmu.Plugins.BasicImplementations.ServerConfigs.ImportObjects.Npcs; using WingsEmu.Plugins.BasicImplementations.ServerConfigs.ImportObjects.Portals; using WingsEmu.Plugins.BasicImplementations.ServerConfigs.ImportObjects.Recipes; using WingsEmu.Plugins.BasicImplementations.ServerConfigs.ImportObjects.Teleporters; using WingsEmu.Plugins.BasicImplementations.Ship; using WingsEmu.Plugins.GameEvents; namespace WingsEmu.Plugins.BasicImplementations; public class GameManagersPluginCore : IGameServerPlugin { public string Name => nameof(GameManagersPluginCore); public void AddDependencies(IServiceCollection services, GameServerLoader gameServer) { // server configs services.AddConfigurationsFromDirectory("map_teleporters"); services.TryAddSingleton(); services.AddConfigurationsFromDirectory("random_boxes"); services.AddConfigurationsFromDirectory("item_boxes"); services.TryAddSingleton(); services.AddConfigurationsFromDirectory("recipes"); services.TryAddSingleton(); services.TryAddSingleton(); services.AddConfigurationsFromDirectory("global_drops"); services.TryAddSingleton(); services.AddConfigurationsFromDirectory("map_npc_placement"); services.TryAddSingleton(); services.TryAddSingleton(); services.AddConfigurationsFromDirectory("map_monster_placement"); services.TryAddSingleton(); services.AddConfigurationsFromDirectory("map_portals"); services.AddConfigurationsFromDirectory("maps"); services.TryAddSingleton(); // core client data services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); // mails services.TryAddSingleton(); services.AddHostedService(s => s.GetRequiredService()); // other managers services.TryAddSingleton(); services.TryAddSingleton(); services.AddBazaarModule(); services.AddInterChannelModule(); services.AddShipModule(gameServer); services.AddDbServerModule(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(typeof(ILongKeyCachedRepository<>), typeof(InMemoryCacheRepository<>)); services.TryAddSingleton(typeof(IUuidKeyCachedRepository<>), typeof(InMemoryUuidCacheRepository<>)); services.TryAddSingleton(typeof(IKeyValueCache<>), typeof(InMemoryKeyValueCache<>)); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.AddFileConfiguration(); services.AddFileConfiguration("snack_food_configuration"); services.AddFileConfiguration("relict_configuration"); services.AddFileConfiguration("item_sum_configuration"); services.AddFileConfiguration("upgrade_normal_item_configuration"); services.AddFileConfiguration("upgrade_phenomenal_item_configuration"); services.AddFileConfiguration("gambling_configuration"); services.TryAddSingleton(); services.AddFileConfiguration("drop_rarity_configuration"); services.TryAddSingleton(); services.AddFileConfiguration(); services.TryAddSingleton(); services.AddMultipleConfigurationOneFile("time_space_configuration"); services.TryAddSingleton(); services.AddMultipleConfigurationOneFile("time_space_npc_run_configuration"); services.TryAddSingleton(); services.AddMultipleConfigurationOneFile("chest_drop_item_configuration"); services.TryAddSingleton(); services.AddMultipleConfigurationOneFile("subacts_configuration"); services.TryAddSingleton(); services.AddFileConfiguration("buffs_to_remove_configuration"); services.TryAddSingleton(); services.AddMultipleConfigurationOneFile("gibberish_configuration"); services.TryAddSingleton(); services.AddMultipleConfigurationOneFile("act5_npc_run_item_configuration"); services.TryAddSingleton(); services.AddMultipleConfigurationOneFile("partner_specialist_basic_configuration"); services.TryAddSingleton(); services.AddMultipleConfigurationOneFile("monster_talking_configuration"); services.TryAddSingleton(); services.AddFileConfiguration("rainbow_configuration"); } }