M0: Scaffold Theriapolis.Godot project (hello-world)
First milestone of the Godot port. Establishes the new project structure and verifies the toolchain is wired up end-to-end. - Godot.NET.Sdk/4.6.2 targeting net8.0; references Theriapolis.Core - project.godot configured for borderless fullscreen at native resolution (per port plan §10 resolved decisions); F11 toggles to windowed - Main.tscn + Main.cs hello-world; nearest-neighbor texture filtering - icon.svg placeholder (T in gild on dark) - Added to Theriapolis.sln Verification: - dotnet build Theriapolis.Godot.csproj: 0 errors, 0 warnings - dotnet build Theriapolis.sln: 0 errors (6 pre-existing warnings unrelated) - dotnet test: 708/708 pass in 26s (unchanged from master) - Godot 4.6.2 opens project; fullscreen + F11 toggle confirmed visually Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
using Godot;
|
||||
|
||||
namespace Theriapolis.GodotHost;
|
||||
|
||||
public partial class Main : Node
|
||||
{
|
||||
public override void _Ready()
|
||||
{
|
||||
GD.Print("Theriapolis.Godot host ready (M0 hello-world).");
|
||||
}
|
||||
|
||||
public override void _UnhandledInput(InputEvent @event)
|
||||
{
|
||||
if (@event.IsActionPressed("ui_toggle_fullscreen"))
|
||||
{
|
||||
var mode = DisplayServer.WindowGetMode();
|
||||
DisplayServer.WindowSetMode(
|
||||
mode == DisplayServer.WindowMode.Fullscreen
|
||||
? DisplayServer.WindowMode.Windowed
|
||||
: DisplayServer.WindowMode.Fullscreen);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://btheriapolis0m0"]
|
||||
|
||||
[ext_resource type="Script" path="res://Main.cs" id="1_main"]
|
||||
|
||||
[node name="Main" type="Node"]
|
||||
script = ExtResource("1_main")
|
||||
|
||||
[node name="Label" type="Label" parent="."]
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -200.0
|
||||
offset_top = -16.0
|
||||
offset_right = 200.0
|
||||
offset_bottom = 16.0
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
text = "Theriapolis · Godot port · M0 · F11 toggles fullscreen"
|
||||
@@ -0,0 +1,13 @@
|
||||
<Project Sdk="Godot.NET.Sdk/4.6.2">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<LangVersion>12</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<EnableDynamicLoading>true</EnableDynamicLoading>
|
||||
<RootNamespace>Theriapolis.GodotHost</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Theriapolis.Core\Theriapolis.Core.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,5 @@
|
||||
<svg width="128" height="128" viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="128" height="128" fill="#1c1410"/>
|
||||
<rect x="6" y="6" width="116" height="116" fill="none" stroke="#d8a84a" stroke-width="2"/>
|
||||
<text x="64" y="78" font-family="serif" font-size="64" font-style="italic" fill="#d8a84a" text-anchor="middle">T</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 360 B |
@@ -0,0 +1,39 @@
|
||||
; Engine configuration file.
|
||||
; Generated for Theriapolis Godot port (M0).
|
||||
;
|
||||
; Format documentation: https://docs.godotengine.org/en/stable/classes/class_projectsettings.html
|
||||
|
||||
config_version=5
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Theriapolis"
|
||||
config/description="Theriapolis — TTRPG worldgen + simulation game (Godot port)."
|
||||
run/main_scene="res://Main.tscn"
|
||||
config/features=PackedStringArray("4.6", "C#", "Forward Plus")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[display]
|
||||
|
||||
; Borderless fullscreen at the primary monitor's native resolution
|
||||
; (per port plan §10 resolved decisions). F11 toggles to windowed.
|
||||
window/size/mode=3
|
||||
window/stretch/mode="canvas_items"
|
||||
window/stretch/aspect="expand"
|
||||
|
||||
[dotnet]
|
||||
|
||||
project/assembly_name="Theriapolis.Godot"
|
||||
|
||||
[input]
|
||||
|
||||
ui_toggle_fullscreen={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194342,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[rendering]
|
||||
|
||||
renderer/rendering_method="forward_plus"
|
||||
textures/canvas_textures/default_texture_filter=0
|
||||
Reference in New Issue
Block a user