Move movie transition request to model

This commit is contained in:
gamer147
2026-08-03 10:23:57 -04:00
parent 53cbeb554d
commit 94f59ddc3c
6 changed files with 18 additions and 14 deletions

View File

@@ -167,7 +167,8 @@ timed-deadline waiting, frame yield, and scene reset. `engine/Age.Engine/Hosting
SFX, fade, volume, and route-control contracts, including the compatibility overload/default chains used by SFX, fade, volume, and route-control contracts, including the compatibility overload/default chains used by
simple hosts. `engine/Age.Engine/Hosting/IMovieHost.cs` owns ordinary, positioned, mask-transition, activity-query, simple hosts. `engine/Age.Engine/Hosting/IMovieHost.cs` owns ordinary, positioned, mask-transition, activity-query,
and modal movie playback contracts. `IHost` inherits all four focused contracts; their required and default and modal movie playback contracts. `IHost` inherits all four focused contracts; their required and default
behavior is unchanged, and movie/graphics transport records remain in their existing locations for now. behavior is unchanged. The neutral `engine/Age.Engine/Model/MovieMaskTransitionRequest.cs` record carries movie
mask work between the VM, host, and retained graphics without making `Model` depend on `Hosting`.
`engine/Age.Engine/Model/GfxState.cs` retains cross-domain retained-graphics coordination. `engine/Age.Engine/Model/GfxState.cs` retains cross-domain retained-graphics coordination.
`engine/Age.Engine/Model/GfxState.Contracts.cs` owns its public render, transition, diagnostic, persistence, `engine/Age.Engine/Model/GfxState.Contracts.cs` owns its public render, transition, diagnostic, persistence,

View File

@@ -776,6 +776,11 @@ do not mix mechanical moves with semantic changes.
`MovieMaskTransitionRequest` remain in their prior locations pending a separate dependency-cleanup slice. `MovieMaskTransitionRequest` remain in their prior locations pending a separate dependency-cleanup slice.
Runtime validation remains green. Runtime validation remains green.
The fourth bounded contract slice moved the unchanged `MovieMaskTransitionRequest` record from `Hosting` to
`Model`. VM, Godot, tests, and the movie host contract already consumed `Model`, so no call sites changed;
removing the two now-unused imports eliminates `GfxState`'s reverse dependency on the host namespace. Runtime
validation remains green.
4. **Make the build graph express source ownership.** Stop linking production `.cs` files from `godot/` and 4. **Make the build graph express source ownership.** Stop linking production `.cs` files from `godot/` and
`tools/movie-corpus-gate/` into `Age.Engine.Tests`. Extract the platform-neutral frontend/movie/diagnostic `tools/movie-corpus-gate/` into `Age.Engine.Tests`. Extract the platform-neutral frontend/movie/diagnostic
code into a small production project referenced by Godot, tests, and the corpus gate. Retain both existing code into a small production project referenced by Godot, tests, and the corpus gate. Retain both existing
@@ -1136,8 +1141,8 @@ layer's rendering diverges from ADV; save layout.
## 8. Immediate next step ## 8. Immediate next step
Continue step 3 of the **codebase consolidation** maintenance slice: clarify runtime contracts without changing Continue step 3 of the **codebase consolidation** maintenance slice: clarify runtime contracts without changing
behavior or the aggregate host accepted by the VM. With diagnostic, lifecycle, audio, and movie contracts behavior or the aggregate host accepted by the VM. With diagnostic, lifecycle, audio, and movie contracts
established beneath `IHost`, move the neutral `MovieMaskTransitionRequest` contract from `Hosting` to `Model` next established beneath `IHost` and the movie-mask request now neutral, move the format-independent `RgbaImage` record
to remove `GfxState`'s reverse dependency on the host namespace, preserving the record's public shape and every from `Sys4` to `Model` next. Update its consumers without changing the record or decoder behavior, removing the
consumer before separating larger host domains. aggregate host's image-only dependency on the format namespace before separating larger host domains.
Concrete playthrough blockers may still preempt this bounded maintenance work; the consolidation effort does Concrete playthrough blockers may still preempt this bounded maintenance work; the consolidation effort does
not replace Phase B gameplay validation or the open cross-platform gates. not replace Phase B gameplay validation or the open cross-platform gates.

View File

@@ -28,13 +28,6 @@ public readonly record struct SurfaceRectCopy(
int SourceSurface, int DestinationSurface, int SourceX, int SourceY, int SourceSurface, int DestinationSurface, int SourceX, int SourceY,
int Width, int Height, int DestinationX, int DestinationY); int Width, int Height, int DestinationX, int DestinationY);
/// <summary>Opcode 0x24d's captured-range movie-mask transition. The movie's decoded green channel
/// becomes a byte-per-pixel alpha mask over SourceRange in the scratch surface.</summary>
public readonly record struct MovieMaskTransitionRequest(
long CommandKey, int SurfaceSlot, long SourceRangeStart, int SourceRangeCount,
int X, int Y, int Width, int Height, long Mode, long ResourceId,
long StartDelayMs, long DurationMs);
/// <summary>A synchronous AGE-owned diagnostic prompt after native body/context formatting.</summary> /// <summary>A synchronous AGE-owned diagnostic prompt after native body/context formatting.</summary>
public readonly record struct DiagnosticMessage(string Caption, string Text); public readonly record struct DiagnosticMessage(string Caption, string Text);

View File

@@ -1,5 +1,3 @@
using Age.Engine.Hosting;
namespace Age.Engine.Model; namespace Age.Engine.Model;
/// <summary>The sampled native one-shot channels carried to the compositor: op 0x21e scale, op 0x21f /// <summary>The sampled native one-shot channels carried to the compositor: op 0x21e scale, op 0x21f

View File

@@ -1,5 +1,4 @@
using System.Linq; using System.Linq;
using Age.Engine.Hosting;
namespace Age.Engine.Model; namespace Age.Engine.Model;

View File

@@ -0,0 +1,8 @@
namespace Age.Engine.Model;
/// <summary>Opcode 0x24d's captured-range movie-mask transition. The movie's decoded green channel
/// becomes a byte-per-pixel alpha mask over SourceRange in the scratch surface.</summary>
public readonly record struct MovieMaskTransitionRequest(
long CommandKey, int SurfaceSlot, long SourceRangeStart, int SourceRangeCount,
int X, int Y, int Width, int Height, long Mode, long ResourceId,
long StartDelayMs, long DurationMs);