M10: byten, hemresan och levelcheck
All checks were successful
release / build-release (push) Successful in 1m37s

Resor med byten: en bana kan ha next som pekar på en delbana (kind leg,
syns inte på bankartan). När man klivit av rätt tåg fortsätter samma
omgång på nästa station med klocka, plånbok, sällskap och räknare;
par-tiden adderas, dimma och folk är nya, en Byte!-banner visas och
HUD:en visar resmålet via bytesstationen. Tidsgräns och missade tåg
gäller hela resan. level.ValidateChains kräver sammanhängande kedjor.
Nya resor: 007 Akihabara -> Ueno -> Asakusa och finalen 008 Tokyo (två
våningar) -> Nippori -> Narita flygplats. Slutscen när sista huvudbanan
klaras första gången: planet lyfter, resan summeras, eftertexter;
Progress.StoryCleared sparas; flaggan -ending. tools/levelcheck ritar
banorna och rapporterar problem. HUD-nivån kortas när mätarna tar plats;
poängraden radbryts. Skärmdumpar och docs uppdaterade.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-24 13:37:48 +02:00
parent f762f9554e
commit 4ae6a1d24c
36 changed files with 1681 additions and 74 deletions

View File

@@ -521,7 +521,7 @@ på **brasse-linux01-runnern** (label `linux-amd64`), aldrig på Pi5:n.
- **Kvar till senare:** flera tåg i rad (byten) kommer med M10; bussar;
"terminaler" som egna rutor i stället för biljettautomaten.
### M10 – Story-innehåll och flerbytesbanor
### M10 – Story-innehåll och flerbytesbanor ✓ (klar 2026-10-24)
- **Mål:** hela resan från flygplats till flygplats.
- Alla huvudbanor och sidobanor; banor med flera stopp och byten; buss (med
@@ -532,6 +532,46 @@ på **brasse-linux01-runnern** (label `linux-amd64`), aldrig på Pi5:n.
- Överstimulerande UI/banor som extra svårighet.
- **Teknik:** baneditor-stöd behövs troligen här: ett `tools/levelcheck`
som ritar banan som bild och rapporterar onåbara rutor.
- **Så blev det:** **Byten** är kedjor av banfiler: en huvudbana har `next`
som pekar på en delbana (`kind: "leg"`, syns inte på bankartan), som i sin
tur kan ha `next`. När man klivit av rätt tåg fortsätter *samma omgång*
på nästa station: klockan, plånboken, sällskapets mätare och räknarna
följer med, par-tiden adderas, dimma och folk är nya, och en "Byte!"-
banner visas. HUD:en visar resans slutmål "via" delbanans mål och
"1/2". Tidsgräns och missade tåg gäller hela resan (första banans
värden). `level.ValidateChains` kräver att delbanor används exakt en gång,
att inga cykler finns och att nästa delbana börjar där den förra slutade
(nätets stationer). **Två nya resor:** 007 Akihabara → Ueno (Hibiya eller
Yamanote) → Asakusa (Ginza), med fel-håll- och fel-varv-fällor, egna kort
och folk; 008 Tokyo (två våningar) → Nippori (Yamanote eller
Keihin-Tohoku) → Narita flygplats (Keisei, biljetter med sittplatsval) –
storyns final. **Slutet:** när sista huvudbanan klaras första gången
visas hemresan (`EndingScene`): planet lyfter över skymningshimlen medan
sällskapet vinkar, resan summeras (banor, stjärnor, poäng, ord,
souvenirer) och eftertexterna rullar; `Progress.StoryCleared` sparas (M11
låser upp oändligt läge/NG+ på den). `-ending` öppnar scenen direkt.
**`tools/levelcheck`** ritar varje våning som PNG (onåbara rutor röda,
rätt perrong grönkantad, kortaste vägen prickad) och rapporterar
lösbarhet, onåbara rutor, perronger utanför spärrar, tågens bedömning och
resornas kedjor; `go run ./tools/levelcheck [ord…]` → `build/levelcheck/`.
Generatorn fick `platforms` (fler perronger) utöver `floors`/`wide`.
- **Klar när:** kedjorna valideras och storyn börjar/slutar på flygplatsen
(`level.TestStoryChains`), bytet för med sig tid/plånbok/sällskap och
vinner först på sista delbanan (`sim.TestJourneyWithTransfer`), fel tåg på
bytesstationen förlorar (`TestJourneyWrongTrainOnSecondLeg`), delbanor
laddas (`TestChainLevelsLoad`), alla banor passerar levelcheck. ✓
- **Kvar till M10b:** bussar och vägrutor, fler sidobanor, överstimulerande
UI som eget svårighetsreglage.
### M10b – Bussar, vägar och fler sidospår
- **Mål:** resten av M10-listan som inte rymdes: buss med vägrutor och
hållplatser (egen fordonssprite, hållplatsskylt, tidtabell som tågen),
fler sidobanor längs storyn (minst en per stad), och ett
"överstimulerande UI"-reglage (fler lockskyltar, blinkande reklam, falska
avgångstavlor) som kan slås på per bana.
- **Teknik:** vägrutor i banformatet, `Vehicle`-abstraktion i sim som tåg
och buss delar, återanvänd `nav` för busslinjer.
### M11 – Oändligt läge och New Game+