Event horizon serialization (#18173)
This commit is contained in:
@@ -40,6 +40,8 @@ public sealed class EventHorizonSystem : SharedEventHorizonSystem
|
||||
SubscribeLocalEvent<MapGridComponent, EventHorizonAttemptConsumeEntityEvent>(PreventConsume);
|
||||
SubscribeLocalEvent<GhostComponent, EventHorizonAttemptConsumeEntityEvent>(PreventConsume);
|
||||
SubscribeLocalEvent<StationDataComponent, EventHorizonAttemptConsumeEntityEvent>(PreventConsume);
|
||||
SubscribeLocalEvent<EventHorizonComponent, MapInitEvent>(OnHorizonMapInit);
|
||||
SubscribeLocalEvent<EventHorizonComponent, EntityUnpausedEvent>(OnHorizonUnpaused);
|
||||
SubscribeLocalEvent<EventHorizonComponent, StartCollideEvent>(OnStartCollide);
|
||||
SubscribeLocalEvent<EventHorizonComponent, EntGotInsertedIntoContainerMessage>(OnEventHorizonContained);
|
||||
SubscribeLocalEvent<EventHorizonContainedEvent>(OnEventHorizonContained);
|
||||
@@ -51,6 +53,16 @@ public sealed class EventHorizonSystem : SharedEventHorizonSystem
|
||||
vvHandle.AddPath(nameof(EventHorizonComponent.TargetConsumePeriod), (_, comp) => comp.TargetConsumePeriod, SetConsumePeriod);
|
||||
}
|
||||
|
||||
private void OnHorizonMapInit(EntityUid uid, EventHorizonComponent component, MapInitEvent args)
|
||||
{
|
||||
component.NextConsumeWaveTime = _timing.CurTime;
|
||||
}
|
||||
|
||||
private void OnHorizonUnpaused(EntityUid uid, EventHorizonComponent component, ref EntityUnpausedEvent args)
|
||||
{
|
||||
component.NextConsumeWaveTime += args.PausedTime;
|
||||
}
|
||||
|
||||
public override void Shutdown()
|
||||
{
|
||||
var vvHandle = Vvm.GetTypeHandler<EventHorizonComponent>();
|
||||
@@ -82,10 +94,10 @@ public sealed class EventHorizonSystem : SharedEventHorizonSystem
|
||||
if (!Resolve(uid, ref eventHorizon))
|
||||
return;
|
||||
|
||||
eventHorizon.LastConsumeWaveTime = _timing.CurTime;
|
||||
eventHorizon.NextConsumeWaveTime = eventHorizon.LastConsumeWaveTime + eventHorizon.TargetConsumePeriod;
|
||||
eventHorizon.NextConsumeWaveTime += eventHorizon.TargetConsumePeriod;
|
||||
if (eventHorizon.BeingConsumedByAnotherEventHorizon)
|
||||
return;
|
||||
|
||||
if (!Resolve(uid, ref xform))
|
||||
return;
|
||||
|
||||
@@ -331,8 +343,9 @@ public sealed class EventHorizonSystem : SharedEventHorizonSystem
|
||||
if (MathHelper.CloseTo(eventHorizon.TargetConsumePeriod.TotalSeconds, value.TotalSeconds))
|
||||
return;
|
||||
|
||||
var diff = (value - eventHorizon.TargetConsumePeriod);
|
||||
eventHorizon.TargetConsumePeriod = value;
|
||||
eventHorizon.NextConsumeWaveTime = eventHorizon.LastConsumeWaveTime + eventHorizon.TargetConsumePeriod;
|
||||
eventHorizon.NextConsumeWaveTime += diff;
|
||||
|
||||
var curTime = _timing.CurTime;
|
||||
if (eventHorizon.NextConsumeWaveTime < curTime)
|
||||
|
||||
Reference in New Issue
Block a user