Turns GameTicker into an EntitySystem. (#4197)

* GameTicker turned into an EntitySystem

* Turns ClientGameTicker into an EntitySystem, turn NetMessages into events

* Change event names to be more consistent with the rest.

* YAML linter uses the dummy gameticker CVar override.

* Fix game ticker initialization order

* Dummy ticker won't spawn players.

* Fix character creation test
This commit is contained in:
Vera Aguilera Puerto
2021-06-20 10:09:24 +02:00
committed by GitHub
parent 15fb554c28
commit d3a611164b
81 changed files with 1711 additions and 1990 deletions

View File

@@ -21,11 +21,10 @@ using static Content.Shared.Inventory.EquipmentSlotDefines;
namespace Content.Server.Sandbox
{
internal sealed class SandboxManager : SharedSandboxManager, ISandboxManager
internal sealed class SandboxManager : SharedSandboxManager, ISandboxManager, IEntityEventSubscriber
{
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IServerNetManager _netManager = default!;
[Dependency] private readonly IGameTicker _gameTicker = default!;
[Dependency] private readonly IPlacementManager _placementManager = default!;
[Dependency] private readonly IConGroupController _conGroupController = default!;
[Dependency] private readonly IEntityManager _entityManager = default!;
@@ -53,7 +52,7 @@ namespace Content.Server.Sandbox
_netManager.RegisterNetMessage<MsgSandboxSuicide>(nameof(MsgSandboxSuicide), SandboxSuicideReceived);
_playerManager.PlayerStatusChanged += OnPlayerStatusChanged;
_gameTicker.OnRunLevelChanged += GameTickerOnOnRunLevelChanged;
_entityManager.EventBus.SubscribeEvent<GameRunLevelChangedEvent>(EventSource.Local, this, GameTickerOnOnRunLevelChanged);
_placementManager.AllowPlacementFunc = placement =>
{
@@ -74,10 +73,10 @@ namespace Content.Server.Sandbox
};
}
private void GameTickerOnOnRunLevelChanged(GameRunLevelChangedEventArgs obj)
private void GameTickerOnOnRunLevelChanged(GameRunLevelChangedEvent obj)
{
// Automatically clear sandbox state when round resets.
if (obj.NewRunLevel == GameRunLevel.PreRoundLobby)
if (obj.New == GameRunLevel.PreRoundLobby)
{
IsSandboxEnabled = false;
}
@@ -103,7 +102,7 @@ namespace Content.Server.Sandbox
}
var player = _playerManager.GetSessionByChannel(message.MsgChannel);
_gameTicker.Respawn(player);
EntitySystem.Get<GameTicker>().Respawn(player);
}
private void SandboxGiveAccessReceived(MsgSandboxGiveAccess message)