Add frontend production project
This commit is contained in:
@@ -106,7 +106,7 @@ S:\Game Hacking\Eushully\Himegari\ ← workspace root (three siblings)
|
||||
│ ├── opcodes.json GENERATED from opcodes.toml (machine view for the C# VM)
|
||||
│ └── manifest.json, opcode-coverage.md (opcode-coverage.md GENERATED from opcodes.toml)
|
||||
│
|
||||
├── engine/ DELIVERABLE — the .NET VM core (AgeEngine.sln: Age.Engine / Age.Cli / tests)
|
||||
├── engine/ DELIVERABLE — the .NET VM/runtime projects and tests (AgeEngine.sln)
|
||||
│ ├── Age.Engine/Model/ retained graphics state plus separately navigable public
|
||||
│ render, transition, diagnostic, and persistence contracts
|
||||
│ ├── Age.Engine/Sys4/ runtime game-root selection, catalog parser, loose-first bounded
|
||||
@@ -118,6 +118,9 @@ S:\Game Hacking\Eushully\Himegari\ ← workspace root (three siblings)
|
||||
│ ├── Age.Engine/Persistence/ native S3SD/S4SD + S3RT codecs, shared payload/ReadTextDB,
|
||||
│ layout-3 numbered state/history/gfx, DAT/STH pair + BMP codec,
|
||||
│ and profile-owned state
|
||||
│ ├── Age.Engine.Frontend/ platform-neutral frontend diagnostics/options project: page
|
||||
│ locator, timeline/trace/step-limit diagnostics, VM/window launch
|
||||
│ options, and performance-frame logging
|
||||
│ └── Age.Engine.Text.Windows/ optional exact Windows GDI gray-4 reference backend; kept
|
||||
│ outside the platform-neutral VM/runtime core
|
||||
├── native/ authored native runtime boundaries
|
||||
@@ -147,6 +150,13 @@ surface-transition drawing, raster helpers, and compositor decision logging. `go
|
||||
Godot input routing, locator/debug hotkeys, debug-scene dispatch, cursor control, native alerts, and
|
||||
full-width text entry.
|
||||
|
||||
`engine/Age.Engine.Frontend/` is the production owner of frontend helpers that do not depend on Godot types.
|
||||
Both `engine/AgeEngine.sln` and `godot/Himegari.sln` include the project; Godot and `Age.Engine.Tests` consume it
|
||||
through project references rather than compiling duplicate linked sources. The first owned cluster contains
|
||||
`PageLocatorState`, `GodotTimelineLog`, `GodotTraceSink`, `StepLimitDiagnosticFormatter`, `GodotVmOptions`,
|
||||
`PerformanceFrameLog`, and `WindowLaunchOptions`. Movie runtime/decoder helpers remain under `godot/` until their
|
||||
separate ownership slices.
|
||||
|
||||
`godot/GodotAdvHost.cs` retains cross-domain host coordination. Its partial-class companion
|
||||
`godot/GodotAdvHost.AdvText.cs` owns live/retained ADV text, surface glyph rasterization and caching,
|
||||
history presentation, message-window alpha, and retained wait-indicator configuration/publication.
|
||||
|
||||
@@ -827,6 +827,13 @@ do not mix mechanical moves with semantic changes.
|
||||
code into a small production project referenced by Godot, tests, and the corpus gate. Retain both existing
|
||||
solution files because Godot export requires the frontend-local solution.
|
||||
|
||||
**Progress (2026-08-03):** the first bounded build-graph slice introduced the platform-neutral
|
||||
`Age.Engine.Frontend` production project and added it to both existing solutions. Page locator, timeline/trace
|
||||
and step-limit diagnostics, VM/window launch options, and performance-frame logging moved unchanged from
|
||||
`godot/` into the new owner. Godot and `Age.Engine.Tests` now use project references, eliminating seven direct
|
||||
test source links without changing public types, namespaces, behavior, or export configuration. Both solution
|
||||
builds and runtime validation remain green.
|
||||
|
||||
5. **Close repository-policy and storage gaps.** Add an explicit project license, third-party notices and
|
||||
checksums/provenance for committed binaries, consistent editor/build policy, a pinned .NET SDK, and a
|
||||
CI entry point built on the same validation driver. Remove the empty workspace-root `.git` directory and
|
||||
@@ -1181,8 +1188,9 @@ layer's rendering diverges from ADV; save layout.
|
||||
|
||||
## 8. Immediate next step
|
||||
Begin step 4 of the **codebase consolidation** maintenance slice: make the build graph express source ownership
|
||||
without changing behavior. Introduce the production project boundary for platform-neutral frontend helpers now
|
||||
linked directly from `godot/` into `Age.Engine.Tests`, starting with the diagnostic/options helper cluster. Replace
|
||||
source links with project references while retaining both existing solution files and Godot export behavior.
|
||||
without changing behavior. Move the platform-neutral movie abstractions and runtime support—decoder interfaces,
|
||||
movie/audio runtime state, movie-surface registry, and RIFF sanitization—from `godot/` into
|
||||
`Age.Engine.Frontend` next. Replace their test source links while preserving the intentionally internal API through
|
||||
explicit friend-assembly access; leave FFmpeg interop/decoder ownership for the following slice.
|
||||
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.
|
||||
|
||||
13
engine/Age.Engine.Frontend/Age.Engine.Frontend.csproj
Normal file
13
engine/Age.Engine.Frontend/Age.Engine.Frontend.csproj
Normal file
@@ -0,0 +1,13 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Age.Engine\Age.Engine.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -22,21 +22,15 @@
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Age.Engine\Age.Engine.csproj" />
|
||||
<ProjectReference Include="..\Age.Engine.Frontend\Age.Engine.Frontend.csproj" />
|
||||
<ProjectReference Include="..\Age.Engine.Text.Windows\Age.Engine.Text.Windows.csproj" />
|
||||
<Compile Include="..\..\godot\IMovieDecoder.cs" Link="IMovieDecoder.cs" />
|
||||
<Compile Include="..\..\godot\MovieRuntime.cs" Link="MovieRuntime.cs" />
|
||||
<Compile Include="..\..\godot\MovieAudioTimeline.cs" Link="MovieAudioTimeline.cs" />
|
||||
<Compile Include="..\..\godot\FfmpegMovieNative.cs" Link="FfmpegMovieNative.cs" />
|
||||
<Compile Include="..\..\godot\FfmpegMovieDecoder.cs" Link="FfmpegMovieDecoder.cs" />
|
||||
<Compile Include="..\..\godot\PageLocatorState.cs" Link="PageLocatorState.cs" />
|
||||
<Compile Include="..\..\godot\GodotTimelineLog.cs" Link="GodotTimelineLog.cs" />
|
||||
<Compile Include="..\..\godot\GodotTraceSink.cs" Link="GodotTraceSink.cs" />
|
||||
<Compile Include="..\..\godot\StepLimitDiagnosticFormatter.cs" Link="StepLimitDiagnosticFormatter.cs" />
|
||||
<Compile Include="..\..\godot\GodotVmOptions.cs" Link="GodotVmOptions.cs" />
|
||||
<Compile Include="..\..\godot\PerformanceFrameLog.cs" Link="PerformanceFrameLog.cs" />
|
||||
<Compile Include="..\..\godot\MovieSurfaceRegistry.cs" Link="MovieSurfaceRegistry.cs" />
|
||||
<Compile Include="..\..\godot\RiffWaveSanitizer.cs" Link="RiffWaveSanitizer.cs" />
|
||||
<Compile Include="..\..\godot\WindowLaunchOptions.cs" Link="WindowLaunchOptions.cs" />
|
||||
<Compile Include="..\..\tools\movie-corpus-gate\MovieCorpusGate.cs" Link="MovieCorpusGate.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@@ -3,9 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.31903.59
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Engine", "Age.Engine\Age.Engine.csproj", "{DD04FB21-F83D-4547-BBEC-97295F30623A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Cli", "Age.Cli\Age.Cli.csproj", "{795573A0-A283-4A28-B26C-606C1AA5E1FE}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Engine", "Age.Engine\Age.Engine.csproj", "{DD04FB21-F83D-4547-BBEC-97295F30623A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Engine.Frontend", "Age.Engine.Frontend\Age.Engine.Frontend.csproj", "{2B018D3E-4057-465E-89CB-4CC77FDD60E2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Cli", "Age.Cli\Age.Cli.csproj", "{795573A0-A283-4A28-B26C-606C1AA5E1FE}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Engine.Tests", "Age.Engine.Tests\Age.Engine.Tests.csproj", "{2ED171C8-DA87-40FD-A6FB-3B3F6501029F}"
|
||||
EndProject
|
||||
@@ -22,8 +24,12 @@ Global
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{DD04FB21-F83D-4547-BBEC-97295F30623A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DD04FB21-F83D-4547-BBEC-97295F30623A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DD04FB21-F83D-4547-BBEC-97295F30623A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DD04FB21-F83D-4547-BBEC-97295F30623A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DD04FB21-F83D-4547-BBEC-97295F30623A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DD04FB21-F83D-4547-BBEC-97295F30623A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2B018D3E-4057-465E-89CB-4CC77FDD60E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2B018D3E-4057-465E-89CB-4CC77FDD60E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2B018D3E-4057-465E-89CB-4CC77FDD60E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2B018D3E-4057-465E-89CB-4CC77FDD60E2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{795573A0-A283-4A28-B26C-606C1AA5E1FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{795573A0-A283-4A28-B26C-606C1AA5E1FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{795573A0-A283-4A28-B26C-606C1AA5E1FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\engine\Age.Engine\Age.Engine.csproj" />
|
||||
<ProjectReference Include="..\engine\Age.Engine.Frontend\Age.Engine.Frontend.csproj" />
|
||||
<EmbeddedResource Include="..\build\opcodes.json"
|
||||
LogicalName="Himegari.Runtime.opcodes.json" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -5,6 +5,8 @@ VisualStudioVersion = 17.0.31903.59
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Himegari", "Himegari.csproj", "{5821B505-EBD3-4B50-A83A-7AFE22AA1528}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Age.Engine.Frontend", "..\engine\Age.Engine.Frontend\Age.Engine.Frontend.csproj", "{2B018D3E-4057-465E-89CB-4CC77FDD60E2}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -21,5 +23,11 @@ Global
|
||||
{5821B505-EBD3-4B50-A83A-7AFE22AA1528}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU
|
||||
{5821B505-EBD3-4B50-A83A-7AFE22AA1528}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU
|
||||
{5821B505-EBD3-4B50-A83A-7AFE22AA1528}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU
|
||||
{2B018D3E-4057-465E-89CB-4CC77FDD60E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2B018D3E-4057-465E-89CB-4CC77FDD60E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2B018D3E-4057-465E-89CB-4CC77FDD60E2}.ExportDebug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2B018D3E-4057-465E-89CB-4CC77FDD60E2}.ExportDebug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2B018D3E-4057-465E-89CB-4CC77FDD60E2}.ExportRelease|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2B018D3E-4057-465E-89CB-4CC77FDD60E2}.ExportRelease|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
Reference in New Issue
Block a user