public void Sanity() { ServerProtobufSerializer server = new ServerProtobufSerializer(); ThreadSafeCollection <InteractiveChildObjectIdentifier> deserialized; using (MemoryStream stream = new MemoryStream()) { server.Serialize(stream, state); stream.Position = 0; deserialized = server.Deserialize <ThreadSafeCollection <InteractiveChildObjectIdentifier> >(stream); } deserialized.Count.Should().BeGreaterThan(0); deserialized[0].GameObjectNamePath.ShouldBeEquivalentTo("/BlablaScene/SomeBlablaContainer/BlaItem"); deserialized[1].GameObjectNamePath.ShouldBeEquivalentTo(""); deserialized[2].GameObjectNamePath.ShouldBeEquivalentTo(" herp "); int iterationCount = 0; foreach (InteractiveChildObjectIdentifier id in deserialized) { iterationCount++; id.Id.ToString().Should().MatchRegex("^[a-zA-Z0-9\\-]{10,}$"); // matches hex and - character id.GameObjectNamePath.Should().NotBeNull(); } iterationCount.ShouldBeEquivalentTo(3); }
public override void RegisterDependencies(ContainerBuilder containerBuilder) { base.RegisterDependencies(containerBuilder); containerBuilder.Register(c => SimulationWhitelist.ForServerSpawned).SingleInstance(); ServerProtobufSerializer serializer = new ServerProtobufSerializer("Assembly-CSharp", "Assembly-CSharp-firstpass", "NitroxModel", "NitroxModel-Subnautica"); containerBuilder.Register(c => serializer).SingleInstance(); containerBuilder.RegisterType <SubnauticaEntitySpawnPointFactory>().As <EntitySpawnPointFactory>().SingleInstance(); ResourceAssets resourceAssets = ResourceAssetsParser.Parse(); containerBuilder.Register(c => resourceAssets).SingleInstance(); containerBuilder.Register(c => resourceAssets.WorldEntitiesByClassId).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.Crash.Model()] = new CrashFishBootstrapper(); bootstrappersByTechType[TechType.Reefback.Model()] = new ReefbackBootstrapper(); containerBuilder.Register(c => bootstrappersByTechType).SingleInstance(); }
public void Sanity() { ServerProtobufSerializer server = new ServerProtobufSerializer(); PDAStateData deserialized; using (MemoryStream stream = new MemoryStream()) { server.Serialize(stream, state); stream.Position = 0; deserialized = server.Deserialize <PDAStateData>(stream); } deserialized.PdaLog.Count.ShouldBeEquivalentTo(1); deserialized.PdaLog[0].Key.ShouldBeEquivalentTo("Some key"); deserialized.EncyclopediaEntries.Count.ShouldBeEquivalentTo(3); deserialized.EncyclopediaEntries[2].ShouldBeEquivalentTo(""); deserialized.PartiallyUnlockedByTechType.Count.ShouldBeEquivalentTo(1); deserialized.PartiallyUnlockedByTechType[new NitroxTechType("Battery")].Progress.ShouldBeEquivalentTo(1f); }
public BatchEntitySpawner(EntitySpawnPointFactory entitySpawnPointFactory, UweWorldEntityFactory worldEntityFactory, UwePrefabFactory prefabFactory, List <Int3> loadedPreviousParsed, ServerProtobufSerializer serializer, Dictionary <TechType, IEntityBootstrapper> customBootstrappersByTechType, Dictionary <string, List <PrefabAsset> > placeholderPrefabsByGroupClassId) { parsedBatches = new HashSet <Int3>(loadedPreviousParsed); this.worldEntityFactory = worldEntityFactory; this.prefabFactory = prefabFactory; this.customBootstrappersByTechType = customBootstrappersByTechType; this.placeholderPrefabsByGroupClassId = placeholderPrefabsByGroupClassId; batchCellsParser = new BatchCellsParser(entitySpawnPointFactory, serializer); }
public WorldPersistence(ServerProtobufSerializer serializer, ServerConfig config) { this.serializer = serializer; this.config = config; }
public BatchEntitySpawner(ResourceAssets resourceAssets, List <Int3> loadedPreviousParsed, ServerProtobufSerializer serializer) { parsedBatches = new HashSet <Int3>(loadedPreviousParsed); worldEntitiesByClassId = resourceAssets.WorldEntitiesByClassId; batchCellsParser = new BatchCellsParser(serializer); LootDistributionsParser lootDistributionsParser = new LootDistributionsParser(); lootDistributionData = lootDistributionsParser.GetLootDistributionData(resourceAssets.LootDistributionsJson); customBootstrappersByTechType[TechType.CrashHome] = new CrashFishBootstrapper(); customBootstrappersByTechType[TechType.Reefback] = new ReefbackBootstrapper(); }