Keep reactive surfaces on daemon frame versions
This commit is contained in:
parent
a102819b2c
commit
63d11c201f
2 changed files with 3 additions and 2 deletions
|
|
@ -953,6 +953,8 @@ internal sealed class AetheriaDaemonYmirSmokeChecks
|
|||
node.Kind is "feedback.event" or "shot.receipt"),
|
||||
"the static pilot surface must not retain mutable gameplay facts");
|
||||
var reactive = AetheriaRuntimeDaemonGameSurfaceBuilder.BuildReactiveGameplay(tick.Frame);
|
||||
Require(reactive.Version == interruption.FrameId,
|
||||
"reactive Eve surfaces and command receipts must share daemon frame-version semantics");
|
||||
Require(Flatten(reactive.Surface.Root).Any(node => node.Kind == "feedback.event" &&
|
||||
node.Props["eventKind"] == "simulation.interrupted" &&
|
||||
node.Props["reason"] == "entity.damaged" &&
|
||||
|
|
|
|||
|
|
@ -206,12 +206,11 @@ namespace GameCult.Aetheria.State.Verse
|
|||
.Concat(receipts.Select(value => value.FrameId))
|
||||
.DefaultIfEmpty(0)
|
||||
.Max();
|
||||
var version = checked(lastFrame * 100000L + events.Length * 100L + receipts.Length);
|
||||
return new AetheriaRuntimeSurfaceDocument(
|
||||
AetheriaRuntimeProviderIdentity.ProviderId,
|
||||
"game.daemon",
|
||||
"Aetheria Pilot Reactive State",
|
||||
version,
|
||||
lastFrame,
|
||||
frame.PublishedAtUtc,
|
||||
new AetheriaRuntimeSurfaceTree(
|
||||
"aetheria.daemon.game.reactive",
|
||||
|
|
|
|||
Loading…
Reference in a new issue