namespace Content.IntegrationTests.Tests
{
[TestFixture]
- public sealed class RoundEndTest : IEntityEventSubscriber
+ public sealed class RoundEndTest
{
+ private sealed class RoundEndTestSystem : EntitySystem
+ {
+ public int Count;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+ SubscribeLocalEvent<RoundEndSystemChangedEvent>(OnRoundEnd);
+ }
+
+ private void OnRoundEnd(RoundEndSystemChangedEvent ev)
+ {
+ Interlocked.Increment(ref Count);
+ }
+ }
+
[Test]
public async Task Test()
{
var server = pair.Server;
- var entManager = server.ResolveDependency<IEntityManager>();
var config = server.ResolveDependency<IConfigurationManager>();
var sysManager = server.ResolveDependency<IEntitySystemManager>();
var ticker = sysManager.GetEntitySystem<GameTicker>();
var roundEndSystem = sysManager.GetEntitySystem<RoundEndSystem>();
-
- var eventCount = 0;
+ var sys = server.System<RoundEndTestSystem>();
+ sys.Count = 0;
await server.WaitAssertion(() =>
{
await server.WaitAssertion(() =>
{
- var bus = entManager.EventBus;
- bus.SubscribeEvent<RoundEndSystemChangedEvent>(EventSource.Local, this, _ =>
- {
- Interlocked.Increment(ref eventCount);
- });
// Press the shuttle call button
roundEndSystem.RequestRoundEnd();
async Task WaitForEvent()
{
var timeout = Task.Delay(TimeSpan.FromSeconds(10));
- var currentCount = Thread.VolatileRead(ref eventCount);
- while (currentCount == Thread.VolatileRead(ref eventCount) && !timeout.IsCompleted)
+ var currentCount = Thread.VolatileRead(ref sys.Count);
+ while (currentCount == Thread.VolatileRead(ref sys.Count) && !timeout.IsCompleted)
{
await pair.RunTicksSync(5);
}
using Robust.Server.Player;
using Robust.Shared.Configuration;
using Robust.Shared.Enums;
+using Robust.Shared.Input;
using Robust.Shared.Player;
using Robust.Shared.Timing;
base.Initialize();
_playerManager.PlayerStatusChanged += OnPlayerChange;
_configManager.OnValueChanged(CCVars.AfkTime, SetAfkDelay, true);
+
+ SubscribeNetworkEvent<FullInputCmdMessage>(HandleInputCmd);
+ }
+
+ private void HandleInputCmd(FullInputCmdMessage msg, EntitySessionEventArgs args)
+ {
+ _afkManager.PlayerDidAction(args.SenderSession);
}
private void SetAfkDelay(float obj)
}
[UsedImplicitly]
- public sealed class AfkManager : IAfkManager, IEntityEventSubscriber
+ public sealed class AfkManager : IAfkManager
{
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
_playerManager.PlayerStatusChanged += PlayerStatusChanged;
_consoleHost.AnyCommandExecuted += ConsoleHostOnAnyCommandExecuted;
-
- _entityManager.EventBus.SubscribeSessionEvent<FullInputCmdMessage>(
- EventSource.Network,
- this,
- HandleInputCmd);
}
public void PlayerDidAction(ICommonSession player)
if (shell.Player is { } player)
PlayerDidAction(player);
}
-
- private void HandleInputCmd(FullInputCmdMessage msg, EntitySessionEventArgs args)
- {
- PlayerDidAction(args.SenderSession);
- }
}
}