Changes required for frozen event bus PR (#23493)
* Changes required for frozen event bus PR * Fix RoundEndTest
This commit is contained in:
@@ -8,8 +8,24 @@ using Robust.Shared.GameObjects;
|
|||||||
namespace Content.IntegrationTests.Tests
|
namespace Content.IntegrationTests.Tests
|
||||||
{
|
{
|
||||||
[TestFixture]
|
[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]
|
[Test]
|
||||||
public async Task Test()
|
public async Task Test()
|
||||||
{
|
{
|
||||||
@@ -22,13 +38,12 @@ namespace Content.IntegrationTests.Tests
|
|||||||
|
|
||||||
var server = pair.Server;
|
var server = pair.Server;
|
||||||
|
|
||||||
var entManager = server.ResolveDependency<IEntityManager>();
|
|
||||||
var config = server.ResolveDependency<IConfigurationManager>();
|
var config = server.ResolveDependency<IConfigurationManager>();
|
||||||
var sysManager = server.ResolveDependency<IEntitySystemManager>();
|
var sysManager = server.ResolveDependency<IEntitySystemManager>();
|
||||||
var ticker = sysManager.GetEntitySystem<GameTicker>();
|
var ticker = sysManager.GetEntitySystem<GameTicker>();
|
||||||
var roundEndSystem = sysManager.GetEntitySystem<RoundEndSystem>();
|
var roundEndSystem = sysManager.GetEntitySystem<RoundEndSystem>();
|
||||||
|
var sys = server.System<RoundEndTestSystem>();
|
||||||
var eventCount = 0;
|
sys.Count = 0;
|
||||||
|
|
||||||
await server.WaitAssertion(() =>
|
await server.WaitAssertion(() =>
|
||||||
{
|
{
|
||||||
@@ -43,11 +58,6 @@ namespace Content.IntegrationTests.Tests
|
|||||||
|
|
||||||
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
|
// Press the shuttle call button
|
||||||
roundEndSystem.RequestRoundEnd();
|
roundEndSystem.RequestRoundEnd();
|
||||||
@@ -118,8 +128,8 @@ namespace Content.IntegrationTests.Tests
|
|||||||
async Task WaitForEvent()
|
async Task WaitForEvent()
|
||||||
{
|
{
|
||||||
var timeout = Task.Delay(TimeSpan.FromSeconds(10));
|
var timeout = Task.Delay(TimeSpan.FromSeconds(10));
|
||||||
var currentCount = Thread.VolatileRead(ref eventCount);
|
var currentCount = Thread.VolatileRead(ref sys.Count);
|
||||||
while (currentCount == Thread.VolatileRead(ref eventCount) && !timeout.IsCompleted)
|
while (currentCount == Thread.VolatileRead(ref sys.Count) && !timeout.IsCompleted)
|
||||||
{
|
{
|
||||||
await pair.RunTicksSync(5);
|
await pair.RunTicksSync(5);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using Content.Shared.CCVar;
|
|||||||
using Robust.Server.Player;
|
using Robust.Server.Player;
|
||||||
using Robust.Shared.Configuration;
|
using Robust.Shared.Configuration;
|
||||||
using Robust.Shared.Enums;
|
using Robust.Shared.Enums;
|
||||||
|
using Robust.Shared.Input;
|
||||||
using Robust.Shared.Player;
|
using Robust.Shared.Player;
|
||||||
using Robust.Shared.Timing;
|
using Robust.Shared.Timing;
|
||||||
|
|
||||||
@@ -30,6 +31,13 @@ public sealed class AFKSystem : EntitySystem
|
|||||||
base.Initialize();
|
base.Initialize();
|
||||||
_playerManager.PlayerStatusChanged += OnPlayerChange;
|
_playerManager.PlayerStatusChanged += OnPlayerChange;
|
||||||
_configManager.OnValueChanged(CCVars.AfkTime, SetAfkDelay, true);
|
_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)
|
private void SetAfkDelay(float obj)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace Content.Server.Afk
|
|||||||
}
|
}
|
||||||
|
|
||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
public sealed class AfkManager : IAfkManager, IEntityEventSubscriber
|
public sealed class AfkManager : IAfkManager
|
||||||
{
|
{
|
||||||
[Dependency] private readonly IEntityManager _entityManager = default!;
|
[Dependency] private readonly IEntityManager _entityManager = default!;
|
||||||
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
[Dependency] private readonly IPlayerManager _playerManager = default!;
|
||||||
@@ -49,11 +49,6 @@ namespace Content.Server.Afk
|
|||||||
|
|
||||||
_playerManager.PlayerStatusChanged += PlayerStatusChanged;
|
_playerManager.PlayerStatusChanged += PlayerStatusChanged;
|
||||||
_consoleHost.AnyCommandExecuted += ConsoleHostOnAnyCommandExecuted;
|
_consoleHost.AnyCommandExecuted += ConsoleHostOnAnyCommandExecuted;
|
||||||
|
|
||||||
_entityManager.EventBus.SubscribeSessionEvent<FullInputCmdMessage>(
|
|
||||||
EventSource.Network,
|
|
||||||
this,
|
|
||||||
HandleInputCmd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PlayerDidAction(ICommonSession player)
|
public void PlayerDidAction(ICommonSession player)
|
||||||
@@ -91,10 +86,5 @@ namespace Content.Server.Afk
|
|||||||
if (shell.Player is { } player)
|
if (shell.Player is { } player)
|
||||||
PlayerDidAction(player);
|
PlayerDidAction(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleInputCmd(FullInputCmdMessage msg, EntitySessionEventArgs args)
|
|
||||||
{
|
|
||||||
PlayerDidAction(args.SenderSession);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user