Esempio n. 1
0
        public override void RegisterDependencies(ContainerBuilder containerBuilder)
        {
            base.RegisterDependencies(containerBuilder);
            containerBuilder.Register(c => SimulationWhitelist.ForServerSpawned).SingleInstance();
            containerBuilder.Register(c => new SubnauticaServerProtobufSerializer("Assembly-CSharp", "Assembly-CSharp-firstpass", "NitroxModel", "NitroxModel-Subnautica"))
            .As <ServerProtobufSerializer>()
            .SingleInstance();

            containerBuilder.RegisterType <SubnauticaEntitySpawnPointFactory>().As <EntitySpawnPointFactory>().SingleInstance();

            ResourceAssets resourceAssets = ResourceAssetsParser.Parse();

            containerBuilder.Register(c => resourceAssets).SingleInstance();
            containerBuilder.Register(c => resourceAssets.WorldEntitiesByClassId).SingleInstance();
            containerBuilder.Register(c => resourceAssets.PlaceholderPrefabsByGroupClassId).SingleInstance();
            containerBuilder.RegisterType <SubnauticaUweWorldEntityFactory>().As <UweWorldEntityFactory>().SingleInstance();

            SubnauticaUwePrefabFactory prefabFactory = new SubnauticaUwePrefabFactory(resourceAssets.LootDistributionsJson);

            containerBuilder.Register(c => prefabFactory).As <UwePrefabFactory>().SingleInstance();

            Dictionary <TechTypeModel, IEntityBootstrapper> bootstrappersByTechType = new Dictionary <TechTypeModel, IEntityBootstrapper>();

            bootstrappersByTechType[TechType.CrashHome.Model()] = new CrashFishBootstrapper();
            bootstrappersByTechType[TechType.Reefback.Model()]  = new ReefbackBootstrapper();

            containerBuilder.Register(c => bootstrappersByTechType).SingleInstance();
        }
        public override void RegisterDependencies(ContainerBuilder containerBuilder)
        {
            base.RegisterDependencies(containerBuilder);

            containerBuilder.Register(c => SimulationWhitelist.ForServerSpawned).SingleInstance();
            containerBuilder.Register(c => new SubnauticaServerProtoBufSerializer(
                                          "Assembly-CSharp",
                                          "Assembly-CSharp-firstpass",
                                          "NitroxModel",
                                          "NitroxModel-Subnautica"))
            .As <ServerProtoBufSerializer, IServerSerializer>()
            .SingleInstance();
            containerBuilder.Register(c => new SubnauticaServerJsonSerializer())
            .As <ServerJsonSerializer, IServerSerializer>()
            .SingleInstance();

            containerBuilder.RegisterType <SubnauticaEntitySpawnPointFactory>().As <EntitySpawnPointFactory>().SingleInstance();

            ResourceAssets resourceAssets = ResourceAssetsParser.Parse();

            containerBuilder.Register(c => resourceAssets).SingleInstance();
            containerBuilder.Register(c => resourceAssets.WorldEntitiesByClassId).SingleInstance();
            containerBuilder.Register(c => resourceAssets.PrefabPlaceholderGroupsByGroupClassId).SingleInstance();
            containerBuilder.Register(c => resourceAssets.NitroxRandom).SingleInstance();
            containerBuilder.RegisterType <SubnauticaUweWorldEntityFactory>().As <UweWorldEntityFactory>().SingleInstance();

            SubnauticaUwePrefabFactory prefabFactory = new SubnauticaUwePrefabFactory(resourceAssets.LootDistributionsJson);

            containerBuilder.Register(c => prefabFactory).As <UwePrefabFactory>().SingleInstance();
            containerBuilder.Register(c => new Dictionary <NitroxTechType, IEntityBootstrapper>
            {
                [TechType.CrashHome.ToDto()] = new CrashFishBootstrapper(),
                [TechType.Reefback.ToDto()]  = new ReefbackBootstrapper(),
                [TechType.None.ToDto()]      = new UntypedCellEntityBootstrapper()
            }).SingleInstance();

            containerBuilder.RegisterType <SubnauticaMap>().As <IMap>().InstancePerLifetimeScope();
        }