using Autofac; using NitroxModel; using NitroxModel.DataStructures.GameLogic.Entities; using NitroxModel.GameLogic.FMOD; using NitroxModel.Helper; using NitroxModel_Subnautica.DataStructures.GameLogic.Entities; using NitroxModel_Subnautica.Helper; using NitroxServer; using NitroxServer.GameLogic; using NitroxServer.GameLogic.Entities; using NitroxServer.GameLogic.Entities.Spawning; using NitroxServer.Resources; using NitroxServer.Serialization; using NitroxServer_Subnautica.GameLogic; using NitroxServer_Subnautica.GameLogic.Entities; using NitroxServer_Subnautica.GameLogic.Entities.Spawning; using NitroxServer_Subnautica.Resources; using NitroxServer_Subnautica.Serialization; namespace NitroxServer_Subnautica { public class SubnauticaServerAutoFacRegistrar : ServerAutoFacRegistrar { public override void RegisterDependencies(ContainerBuilder containerBuilder) { base.RegisterDependencies(containerBuilder); containerBuilder.RegisterType() .As() .SingleInstance(); containerBuilder.Register(c => new SubnauticaServerProtoBufSerializer( "Assembly-CSharp", "Assembly-CSharp-firstpass", "NitroxModel", "NitroxModel-Subnautica")) .As() .SingleInstance(); containerBuilder.Register(c => new SubnauticaServerJsonSerializer()) .As() .SingleInstance(); containerBuilder.RegisterType().As().SingleInstance(); ResourceAssets resourceAssets = ResourceAssetsParser.Parse(); containerBuilder.Register(c => resourceAssets).SingleInstance(); containerBuilder.Register(c => resourceAssets.WorldEntitiesByClassId).SingleInstance(); containerBuilder.Register(c => resourceAssets.PrefabPlaceholdersGroupsByGroupClassId).SingleInstance(); containerBuilder.Register(c => resourceAssets.NitroxRandom).SingleInstance(); containerBuilder.RegisterType().As().SingleInstance(); SubnauticaUwePrefabFactory prefabFactory = new SubnauticaUwePrefabFactory(resourceAssets.LootDistributionsJson); containerBuilder.Register(c => prefabFactory).As().SingleInstance(); containerBuilder.RegisterType() .As() .SingleInstance(); containerBuilder.RegisterType().As().InstancePerLifetimeScope(); containerBuilder.RegisterType().AsSelf().InstancePerLifetimeScope(); containerBuilder.RegisterType().As().InstancePerLifetimeScope(); containerBuilder.Register(c => FMODWhitelist.Load(GameInfo.Subnautica)).InstancePerLifetimeScope(); containerBuilder.Register(_ => new RandomSpawnSpoofer(resourceAssets.RandomPossibilitiesByClassId)) .SingleInstance(); } } }