Don't spawn rad pulses on paused grids (#2121)

* Don't spawn rad pulses on paused grids

* Only radiate default grid

Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
This commit is contained in:
metalgearsloth
2020-10-09 23:47:56 +11:00
committed by GitHub
parent 2c39656c9e
commit f9ab5f6a82
4 changed files with 31 additions and 9 deletions

View File

@@ -14,6 +14,9 @@ namespace Content.IntegrationTests
{
public GameRunLevel RunLevel { get; } = GameRunLevel.InRound;
public MapId DefaultMap { get; } = MapId.Nullspace;
public GridId DefaultGridId { get; } = GridId.Invalid;
public event Action<GameRunLevelChangedEventArgs> OnRunLevelChanged
{
add { }

View File

@@ -100,6 +100,10 @@ namespace Content.Server.GameTicking
[ViewVariables] public bool Paused { get; private set; }
[ViewVariables] public MapId DefaultMap { get; private set; }
[ViewVariables] public GridId DefaultGridId { get; private set; }
[ViewVariables]
public GameRunLevel RunLevel
{
@@ -687,10 +691,11 @@ namespace Content.Server.GameTicking
private void _preRoundSetup()
{
var newMapId = _mapManager.CreateMap();
DefaultMap = _mapManager.CreateMap();
var startTime = _gameTiming.RealTime;
var grid = _mapLoader.LoadBlueprint(newMapId, MapFile);
var grid = _mapLoader.LoadBlueprint(DefaultMap, MapFile);
DefaultGridId = grid.Index;
_spawnPoint = grid.ToCoordinates();
var timeSpan = _gameTiming.RealTime - startTime;

View File

@@ -16,6 +16,16 @@ namespace Content.Server.Interfaces.GameTicking
{
GameRunLevel RunLevel { get; }
/// <summary>
/// The map loaded by the GameTicker on round start.
/// </summary>
MapId DefaultMap { get; }
/// <summary>
/// The GridId loaded by the GameTicker on round start.
/// </summary>
GridId DefaultGridId { get; }
event Action<GameRunLevelChangedEventArgs> OnRunLevelChanged;
event Action<GameRuleAddedEventArgs> OnRuleAdded;

View File

@@ -1,9 +1,11 @@
using Content.Server.GameObjects.Components.Mobs;
using Content.Server.GameObjects.Components.StationEvents;
using Content.Server.Interfaces.GameTicking;
using Content.Shared.GameObjects.Components.Mobs;
using Content.Shared.Utility;
using JetBrains.Annotations;
using Robust.Server.GameObjects.EntitySystems;
using Robust.Server.Interfaces.Timing;
using Robust.Shared.GameObjects.Systems;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Interfaces.Map;
@@ -104,12 +106,14 @@ namespace Content.Server.StationEvents
if (_timeUntilPulse <= 0.0f)
{
// TODO: Probably rate-limit this for small grids (e.g. no more than 25% covered)
foreach (var grid in _mapManager.GetAllGrids())
{
if (grid.IsDefaultGrid) continue;
SpawnPulse(grid);
}
var pauseManager = IoCManager.Resolve<IPauseManager>();
var gameTicker = IoCManager.Resolve<IGameTicker>();
var defaultGrid = IoCManager.Resolve<IMapManager>().GetGrid(gameTicker.DefaultGridId);
if (pauseManager.IsGridPaused(defaultGrid))
return;
SpawnPulse(defaultGrid);
}
}