Critical fix(#106)
# Conflicts: # Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs
This commit is contained in:
@@ -6,8 +6,9 @@ using Robust.Shared.Random;
|
|||||||
using System.Buffers;
|
using System.Buffers;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
using Content.Shared.DeviceNetwork.Components;
|
using Content.Shared.Doors.Components;
|
||||||
using Content.Shared.Examine;
|
using Content.Shared.Examine;
|
||||||
|
using Robust.Shared.Timing;
|
||||||
|
|
||||||
namespace Content.Server.DeviceNetwork.Systems
|
namespace Content.Server.DeviceNetwork.Systems
|
||||||
{
|
{
|
||||||
@@ -38,6 +39,10 @@ namespace Content.Server.DeviceNetwork.Systems
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private Queue<DeviceNetworkPacketEvent> _nextQueue = null!;
|
private Queue<DeviceNetworkPacketEvent> _nextQueue = null!;
|
||||||
|
|
||||||
|
[Dependency] private readonly IGameTiming _gameTiming = default!; //WD
|
||||||
|
|
||||||
|
private readonly TimeSpan _packetDelay = TimeSpan.FromMilliseconds(500); //WD
|
||||||
|
private TimeSpan _lastPacket = TimeSpan.Zero; //WD
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -54,6 +59,20 @@ namespace Content.Server.DeviceNetwork.Systems
|
|||||||
|
|
||||||
while (_activeQueue.TryDequeue(out var packet))
|
while (_activeQueue.TryDequeue(out var packet))
|
||||||
{
|
{
|
||||||
|
//WD edit
|
||||||
|
if (TryComp<DoorComponent>(packet.Sender, out _))
|
||||||
|
{
|
||||||
|
if (_lastPacket == TimeSpan.Zero)
|
||||||
|
_lastPacket = _gameTiming.CurTime;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_gameTiming.CurTime - _lastPacket < _packetDelay)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_lastPacket = _gameTiming.CurTime;
|
||||||
|
//WD edit
|
||||||
SendPacket(packet);
|
SendPacket(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -358,10 +377,10 @@ namespace Content.Server.DeviceNetwork.Systems
|
|||||||
if (connection.Owner == packet.Sender)
|
if (connection.Owner == packet.Sender)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
RaiseLocalEvent(connection.Owner, beforeEv, false);
|
RaiseLocalEvent(connection.Owner, beforeEv);
|
||||||
|
|
||||||
if (!beforeEv.Cancelled)
|
if (!beforeEv.Cancelled)
|
||||||
RaiseLocalEvent(connection.Owner, packet, false);
|
RaiseLocalEvent(connection.Owner, packet);
|
||||||
else
|
else
|
||||||
beforeEv.Uncancel();
|
beforeEv.Uncancel();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user