Exemple #1
0
        public async Task WeightlessStatusTest()
        {
            var options = new ServerContentIntegrationOption {
                ExtraPrototypes = Prototypes
            };
            var server = StartServer(options);

            await server.WaitIdleAsync();

            var mapManager    = server.ResolveDependency <IMapManager>();
            var entityManager = server.ResolveDependency <IEntityManager>();

            EntityUid             human  = default;
            SharedAlertsComponent alerts = null;

            await server.WaitAssertion(() =>
            {
                var grid        = GetMainGrid(mapManager);
                var coordinates = grid.ToCoordinates();
                human           = entityManager.SpawnEntity("HumanDummy", coordinates);

                Assert.True(entityManager.TryGetComponent(human, out alerts));
            });

            // Let WeightlessSystem and GravitySystem tick
            await server.WaitRunTicks(1);

            await server.WaitAssertion(() =>
            {
                // No gravity without a gravity generator
                Assert.True(alerts.IsShowingAlert(AlertType.Weightless));

                entityManager.SpawnEntity("GravityGeneratorDummy", entityManager.GetComponent <TransformComponent>(human).Coordinates);
            });

            // Let WeightlessSystem and GravitySystem tick
            await server.WaitRunTicks(1);

            await server.WaitAssertion(() =>
            {
                Assert.False(alerts.IsShowingAlert(AlertType.Weightless));

                // TODO: Re-add gravity generator breaking when Vera is done with construction stuff.

                /*
                 * // Disable the gravity generator
                 * var args = new BreakageEventArgs {Owner = human};
                 * // gravityGenerator.OnBreak(args);
                 */
            });

            /*await server.WaitRunTicks(1);
             *
             * await server.WaitAssertion(() =>
             * {
             *  Assert.True(alerts.IsShowingAlert(AlertType.Weightless));
             * });*/
        }
        public async Task WeightlessStatusTest()
        {
            var options = new ServerIntegrationOptions {
                ExtraPrototypes = PROTOTYPES
            };
            var server = StartServer(options);

            await server.WaitIdleAsync();

            var mapManager            = server.ResolveDependency <IMapManager>();
            var entityManager         = server.ResolveDependency <IEntityManager>();
            var pauseManager          = server.ResolveDependency <IPauseManager>();
            var tileDefinitionManager = server.ResolveDependency <ITileDefinitionManager>();

            IEntity human = null;
            SharedAlertsComponent alerts = null;

            await server.WaitAssertion(() =>
            {
                var mapId = mapManager.CreateMap();

                pauseManager.AddUninitializedMap(mapId);

                var gridId = new GridId(1);

                if (!mapManager.TryGetGrid(gridId, out var grid))
                {
                    grid = mapManager.CreateGrid(mapId, gridId);
                }

                var tileDefinition = tileDefinitionManager["underplating"];
                var tile           = new Tile(tileDefinition.TileId);
                var coordinates    = grid.ToCoordinates();

                grid.SetTile(coordinates, tile);

                pauseManager.DoMapInitialize(mapId);

                human = entityManager.SpawnEntity("HumanDummy", coordinates);

                Assert.True(human.TryGetComponent(out alerts));
            });

            // Let WeightlessSystem and GravitySystem tick
            await server.WaitRunTicks(1);

            GravityGeneratorComponent gravityGenerator = null;

            await server.WaitAssertion(() =>
            {
                // No gravity without a gravity generator
                Assert.True(alerts.IsShowingAlert(AlertType.Weightless));

                gravityGenerator = human.EnsureComponent <GravityGeneratorComponent>();
            });

            // Let WeightlessSystem and GravitySystem tick
            await server.WaitRunTicks(1);

            await server.WaitAssertion(() =>
            {
                Assert.False(alerts.IsShowingAlert(AlertType.Weightless));

                // Disable the gravity generator
                var args = new BreakageEventArgs {
                    Owner = human
                };
                gravityGenerator.OnBreak(args);
            });

            await server.WaitRunTicks(1);

            await server.WaitAssertion(() =>
            {
                Assert.False(alerts.IsShowingAlert(AlertType.Weightless));
            });
        }