Put layer and wall-clock bans in one test project so Content and Protocol fail the same way as People.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-20 12:48:00 +03:00
co-authored by Cursor
parent 9a6cbff55a
commit 121c28e4a3
10 changed files with 194 additions and 86 deletions
+6 -3
View File
@@ -5,7 +5,7 @@ in-game calendars, a TypeScript client that renders the menus, and .NET Aspire t
for local runs and integration tests.
What exists today is the shell around a game: a main menu of schools, a creation form, and a
school screen with a running game clock. The school itself is still empty.
school screen with a running game clock. People already walk, dress, take lessons and talk.
## Stack
@@ -65,7 +65,8 @@ Do **not** add port 5180 or the Aspire dashboard to `tailscale serve`.
ticking live. Deleting one asks for confirmation first. The footer switches the UI between
Russian and English; the choice is remembered in the browser.
- **Create a school** — type a name or roll a random one, pick a start date (3 April 2012, 06:00
by default). At six schools the create button is disabled and says why.
by default). When the player has filled their school slots the create button is disabled and
says why.
- **Inside a school** — the date, time and weekday of the game calendar, play/pause and the
×½ ×1 ×2 ×5 ×10 speed buttons, plus a way back to the menu.
@@ -94,6 +95,8 @@ which matches the server's launch profile.
dotnet test
```
- `tests/HSchool.Architecture.Tests` — layer bans (Arch, ASP.NET, sockets, wall-clock) for
Protocol through Simulation. No host.
- `tests/HSchool.Protocol.Tests` — wire-format round-trips and byte layouts.
- `tests/HSchool.Content.Tests` — JSONC catalog, inheritance, patches, map connectivity. No host.
- `tests/HSchool.Simulation.Tests` — the game clock, school load/create, and the school registry, no host involved.
@@ -133,7 +136,7 @@ Simulation tunables live under the `Simulation` section of
| Key | Default | Meaning |
| --- | --- | --- |
| `TickRate` | 20 | fixed simulation steps per second |
| `MaxSchools` | 6 | how many schools may exist at once |
| `MaxSchools` | 2 | how many schools each player may own |
| `GameMinutesPerRealSecond` | 1 | game minutes per real second at ×1 |
| `DefaultStartDate` | `2012-03-31T06:00:00` | prefilled start of a new school |
| `SavesDirectory` | `saves` | per-school JSON files |