Event horizon serialization (#18173)

This commit is contained in:
metalgearsloth
2023-07-30 20:47:44 +10:00
committed by GitHub
parent c00601acfc
commit fae9a05ea2
2 changed files with 20 additions and 12 deletions

View File

@@ -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)