Changes required for frozen event bus PR (#23493)

* Changes required for frozen event bus PR

* Fix RoundEndTest
This commit is contained in:
Leon Friedrich
2024-01-03 21:26:25 -05:00
committed by GitHub
parent d15ff373d8
commit 377be6fcca
3 changed files with 30 additions and 22 deletions

View File

@@ -8,8 +8,24 @@ using Robust.Shared.GameObjects;
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()
{
@@ -22,13 +38,12 @@ namespace Content.IntegrationTests.Tests
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(() =>
{
@@ -43,11 +58,6 @@ namespace Content.IntegrationTests.Tests
await server.WaitAssertion(() =>
{
var bus = entManager.EventBus;
bus.SubscribeEvent<RoundEndSystemChangedEvent>(EventSource.Local, this, _ =>
{
Interlocked.Increment(ref eventCount);
});
// Press the shuttle call button
roundEndSystem.RequestRoundEnd();
@@ -118,8 +128,8 @@ namespace Content.IntegrationTests.Tests
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);
}

View File

@@ -4,6 +4,7 @@ using Content.Shared.CCVar;
using Robust.Server.Player;
using Robust.Shared.Configuration;
using Robust.Shared.Enums;
using Robust.Shared.Input;
using Robust.Shared.Player;
using Robust.Shared.Timing;
@@ -30,6 +31,13 @@ public sealed class AFKSystem : EntitySystem
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)

View File

@@ -33,7 +33,7 @@ namespace Content.Server.Afk
}
[UsedImplicitly]
public sealed class AfkManager : IAfkManager, IEntityEventSubscriber
public sealed class AfkManager : IAfkManager
{
[Dependency] private readonly IEntityManager _entityManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!;
@@ -49,11 +49,6 @@ namespace Content.Server.Afk
_playerManager.PlayerStatusChanged += PlayerStatusChanged;
_consoleHost.AnyCommandExecuted += ConsoleHostOnAnyCommandExecuted;
_entityManager.EventBus.SubscribeSessionEvent<FullInputCmdMessage>(
EventSource.Network,
this,
HandleInputCmd);
}
public void PlayerDidAction(ICommonSession player)
@@ -91,10 +86,5 @@ namespace Content.Server.Afk
if (shell.Player is { } player)
PlayerDidAction(player);
}
private void HandleInputCmd(FullInputCmdMessage msg, EntitySessionEventArgs args)
{
PlayerDidAction(args.SenderSession);
}
}
}