M6.20: TitleScreen entry point with parchment-themed button stack

Default boot now lands on a centered title screen instead of the M0
hello-world label. Vertical button stack — New Character, Continue,
Quit — over the codex parchment field, with the H1 codex title and a
PORT / GODOT · M6.20 version chip in the bottom-right.

Continue is disabled until user://character.json exists; clicking it
prints a placeholder until the M7 play loop can pick the persisted
state up. New Character swaps the title for the wizard scene under
the Main parent. The wizard's existing "← Title" back-button on
Step 0 now actually does something — TitleScreen wires its
BackToTitle signal to a parent-side swap that reinstates the title
screen when the player backs out.

--wizard command-line flag still skips straight to the wizard for
fast-path development. Layout uses SetAnchorsAndOffsetsPreset
(LayoutPreset.FullRect) on the backing panel and CenterContainer —
manual AnchorRight = 1 doesn't fill in code because Godot's anchor
setters preserve visual position by adjusting offsets, leaving the
control at 0×0.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Christopher Wiebe
2026-05-09 22:01:51 -07:00
parent f7cadaeb68
commit 2db442be7e
3 changed files with 154 additions and 15 deletions
+7 -1
View File
@@ -1,6 +1,7 @@
using Godot;
using Theriapolis.GodotHost.Platform;
using Theriapolis.GodotHost.Rendering;
using Theriapolis.GodotHost.Scenes;
using Theriapolis.GodotHost.UI;
namespace Theriapolis.GodotHost;
@@ -128,7 +129,12 @@ public partial class Main : Control
return;
}
GD.Print("Theriapolis.Godot host ready (M0 hello-world).");
// Default entry point — TitleScreen. M0's hello-world Label is no
// longer the boot UI; the title swaps itself for the wizard when
// "New Character" is clicked, or shuts the engine down on Quit.
foreach (Node child in GetChildren())
child.QueueFree();
AddChild(new TitleScreen());
}
public override void _UnhandledInput(InputEvent @event)