Beispiel #1
0
        public static void ClassInitialize(TestContext context)
        {
            NitroxServiceLocator.InitializeDependencyContainer(new SubnauticaServerAutoFacRegistrar(), new TestAutoFacRegistrar());
            NitroxServiceLocator.BeginNewLifetimeScope();

            WorldPersistence worldPersistence = NitroxServiceLocator.LocateService <WorldPersistence>();

            serverSerializers = NitroxServiceLocator.LocateService <IServerSerializer[]>();
            worldsDataAfter   = new PersistedWorldData[serverSerializers.Length];
            tempSaveFilePath  = Path.Combine(Path.GetTempPath(), "NitroxTestTempDir");

            worldData = GeneratePersistedWorldData();
            World world = worldPersistence.CreateWorld(worldData, ServerGameMode.CREATIVE);

            world.EventTriggerer.ResetWorldTime();

            for (int index = 0; index < serverSerializers.Length; index++)
            {
                //Checking saving
                worldPersistence.UpdateSerializer(serverSerializers[index]);
                Assert.IsTrue(worldPersistence.Save(world, tempSaveFilePath), $"Saving normal world failed while using {serverSerializers[index]}.");
                Assert.IsFalse(worldPersistence.Save(null, tempSaveFilePath), $"Saving null world worked while using {serverSerializers[index]}.");

                //Checking loading
                Optional <World> worldAfter = worldPersistence.LoadFromFile(tempSaveFilePath);
                Assert.IsTrue(worldAfter.HasValue, $"Loading saved world failed while using {serverSerializers[index]}.");
                worldAfter.Value.EventTriggerer.ResetWorldTime();
                worldsDataAfter[index] = PersistedWorldData.From(worldAfter.Value);
            }
        }
        public SwapSerializerCommand(ServerConfig serverConfig, WorldPersistence worldPersistence) : base("swapserializer", Perms.CONSOLE, "Allows to change the save format")
        {
            AddParameter(new TypeEnum <ServerSerializerMode>("serializer", true, "Save format to change to"));

            this.worldPersistence = worldPersistence;
            this.serverConfig     = serverConfig;
        }
 public UpgradeCommand(WorldPersistence worldPersistence, ServerConfig serverConfig, SaveDataUpgrade[] upgrades, Server server) : base("upgrade", Perms.CONSOLE, "Upgrades the save file to the next version")
 {
     this.worldPersistence = worldPersistence;
     this.serverConfig     = serverConfig;
     this.upgrades         = upgrades;
     this.server           = server;
 }
Beispiel #4
0
 public Server()
 {
     worldPersistence = new WorldPersistence();
     world            = worldPersistence.Load();
     packetHandler    = new PacketHandler(world);
     tcpServer        = new TcpServer(packetHandler, world.PlayerManager);
 }
Beispiel #5
0
        public void Setup()
        {
            NitroxServiceLocator.InitializeDependencyContainer(new SubnauticaServerAutoFacRegistrar(), new TestAutoFacRegistrar());
            NitroxServiceLocator.BeginNewLifetimeScope();

            tempSaveFilePath  = Path.Combine(Path.GetTempPath(), "NitroxTestTempDir");
            serverSerializers = NitroxServiceLocator.LocateService <IServerSerializer[]>();
            worldPersistence  = NitroxServiceLocator.LocateService <WorldPersistence>();
            serverConfig      = NitroxServiceLocator.LocateService <ServerConfig>();

            worldData = GeneratePersistedWorldData();
            world     = worldPersistence.CreateWorld(worldData, serverConfig.GameMode);

            worldsDataAfter = new PersistedWorldData[serverSerializers.Length];
            for (int index = 0; index < serverSerializers.Length; index++)
            {
                worldPersistence.UpdateSerializer(serverSerializers[index]);
                Assert.IsTrue(worldPersistence.Save(world, tempSaveFilePath));
                Assert.IsFalse(worldPersistence.Save(null, tempSaveFilePath));

                worldPersistence.UpdateSerializer(serverSerializers[index]);
                Optional <World> worldAfter = worldPersistence.LoadFromFile(tempSaveFilePath);
                Assert.IsTrue(worldAfter.HasValue);
                worldsDataAfter[index] = PersistedWorldData.From(worldAfter.Value);
            }
        }
Beispiel #6
0
 public Server()
 {
     worldPersistence = new WorldPersistence();
     world            = worldPersistence.Load();
     packetHandler    = new PacketHandler(world);
     udpServer        = new UdpServer(packetHandler, world.PlayerManager, world.EntitySimulation);
 }
Beispiel #7
0
        public Server(WorldPersistence worldPersistence, World world, ServerConfig serverConfig, Communication.NetworkingLayer.NitroxServer server)
        {
            Instance = this;
            this.worldPersistence = worldPersistence;
            this.world            = world;
            this.server           = server;

            saveTimer           = new Timer();
            saveTimer.Interval  = serverConfig.SaveInterval;
            saveTimer.AutoReset = true;
            saveTimer.Elapsed  += delegate { Save(); };
        }
Beispiel #8
0
        public Server(WorldPersistence worldPersistence, World world, UdpServer udpServer, ServerConfig serverConfig)
        {
            Instance = this;
            this.worldPersistence = worldPersistence;
            this.world            = world;

            this.udpServer = udpServer;

            saveTimer           = new Timer();
            saveTimer.Interval  = serverConfig.SaveInterval;
            saveTimer.AutoReset = true;
            saveTimer.Elapsed  += delegate { Save(); };
        }
Beispiel #9
0
        public Server(WorldPersistence worldPersistence, World world, UdpServer udpServer)
        {
            Instance = this;
            this.worldPersistence = worldPersistence;
            this.world            = world;

            this.udpServer = udpServer;

            //Maybe add settings for the interval?
            saveTimer           = new Timer();
            saveTimer.Interval  = 60000;
            saveTimer.AutoReset = true;
            saveTimer.Elapsed  += delegate { Save(); };
        }
Beispiel #10
0
        public Server(WorldPersistence worldPersistence, World world, ServerConfig serverConfig, Communication.NetworkingLayer.NitroxServer server)
        {
            if (ConfigurationManager.AppSettings.Count == 0)
            {
                Log.Warn("Nitrox Server Cant Read Config File.");
            }
            Instance = this;
            this.worldPersistence = worldPersistence;
            this.world            = world;
            this.server           = server;

            saveTimer           = new Timer();
            saveTimer.Interval  = serverConfig.SaveInterval;
            saveTimer.AutoReset = true;
            saveTimer.Elapsed  += delegate { Save(); };
        }
Beispiel #11
0
        public Server()
        {
            Instance         = this;
            worldPersistence = new WorldPersistence();
            world            = worldPersistence.Load();
            packetHandler    = new PacketHandler(world);
            udpServer        = new UdpServer(packetHandler, world.PlayerManager, world.EntitySimulation);

            //Maybe add settings for the interval?
            saveTimer           = new Timer();
            saveTimer.Interval  = 60000;
            saveTimer.AutoReset = true;
            saveTimer.Elapsed  += delegate
            {
                Save();
            };
        }
Beispiel #12
0
        public Server(WorldPersistence worldPersistence, World world, ServerConfig serverConfig, Communication.NitroxServer server, EntityManager entityManager)
        {
            this.worldPersistence = worldPersistence;
            this.serverConfig     = serverConfig;
            this.server           = server;
            this.world            = world;
            this.entityManager    = entityManager;

            Instance = this;

            saveTimer           = new Timer();
            saveTimer.Interval  = serverConfig.SaveInterval;
            saveTimer.AutoReset = true;
            saveTimer.Elapsed  += delegate
            {
                Save();
            };
        }
Beispiel #13
0
        public Server(ServerConfig config)
        {
            serverConfiguration = config;
            Instance            = this;
            worldPersistence    = new WorldPersistence();
            world         = worldPersistence.Load();
            packetHandler = new PacketHandler(world);
            udpServer     = new UdpServer(packetHandler, world.PlayerManager, world.EntitySimulation, serverConfiguration);
            ConsoleCommandProcessor.RegisterCommands();

            //Maybe add settings for the interval?
            saveTimer           = new Timer();
            saveTimer.Interval  = 60000;
            saveTimer.AutoReset = true;
            saveTimer.Elapsed  += delegate
            {
                Save();
            };
        }
 public SwapSerializerCommand(WorldPersistence worldPersistence, ServerProtoBufSerializer protoBufSerializer, ServerJsonSerializer jsonSerializer) : base("swapSerializer", Perms.CONSOLE, "Swaps the world data serializer")
 {
     this.worldPersistence   = worldPersistence;
     this.protoBufSerializer = protoBufSerializer;
     this.jsonSerializer     = jsonSerializer;
 }