M6: plånbok, biljetter, kortet i telefonen och seedade minispel
All checks were successful
release / build-release (push) Successful in 1m41s
All checks were successful
release / build-release (push) Successful in 1m41s
- sim.Wallet: IC-kort, kontanter, pappersbiljett, telefon med batteri, spenderat; följer med mellan banor (Game.Wallet) - internal/minigame: gemensamt Game-gränssnitt (Update/Done/Success), all slump från del-seeds: TopUp (hitta チャージ, belopp, mata sedlar), Ticket (taxetavla med resmål på japanska), Crowd (tidsfönster, två försök), Ride (stationerna passerar, kliv av vid resmålet) - sim.Run: spärren kräver biljett på biljettbanor annars användbart kort; telefonen ger ×1,1 fart men 15 % seedad omskanning (frysning 1,5 s), dött batteri gör kortet oanvändbart; automaten startar påfyllning eller biljettköp; tåget kontrollerar biljetten; fulla tåg kräver trängsel; resan avgör vinst/förlust (fel station, åkte förbi, fel tåg); StepMini låter klockan och sällskapet ticka medan rörelsen pausar - level: ticketRequired, rideStops, Train.Crowded; 002 är biljettbana med fullt tåg och fyra stopp; ordboken har stationer (kind) + sju nya namn - game: vyer för minispelen, plånbok i HUD, P i menyn = kort i telefonen, förlustorsaker och spenderat på resultatet, flaggor -phone/-card, skriptkommandon hold/waitstop; inforuta/minikarta döljs under minispel - plan: M7b (Björn) – tågvind, ankomstindikator nära rälsen, in-/utkörningsanimation för tåg och bussar – i spelbeskrivning, roadmap, testplan - docs/README/wiki med tre nya bilder (automat, biljettavla, tågresa) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -60,6 +60,7 @@ metro-puzzle-jp/
|
||||
│ ├── level/ banformat, validering, BFS (ren Go)
|
||||
│ ├── sim/ rutbaserad rörelse, kollision, kamera, banomgång (Run), sällskap (Party), dimma (Fog) – ren Go
|
||||
│ ├── lang/ ordbok, tokenisering, kunskap, delvis översättning, engelska-andel, hjälptid – ren Go
|
||||
│ ├── minigame/ påfyllning, biljettköp, trängsel, tågresa – seedade, ren Go
|
||||
│ ├── game/ Ebitengine-loop, scener, input, rendering, skriptläge ← får använda Ebitengine
|
||||
│ ├── archtest/ beroenderegler
|
||||
│ └── … kommande: lang/, nav/, score/, save/, minigame/, ui/, audio/
|
||||
@@ -254,18 +255,37 @@ på **brasse-linux01-runnern** (label `linux-amd64`), aldrig på Pi5:n.
|
||||
syns från start – `TestFogRevealsAlongCorridorsNotThroughWalls`,
|
||||
`TestLandmarksAlwaysVisible`, `TestFogGrowsWithMovementAndResetsPerRun`. ✓
|
||||
|
||||
### M6 – Kort, biljetter, telefon och minispel
|
||||
### M6 – Kort, biljetter, telefon och minispel ✓ (klar 2026-10-24)
|
||||
|
||||
- **Mål:** resurshantering och de seedade minispelen.
|
||||
- Kortsaldo som dras i spärren; tomt kort → hitta automat → påfyllningsminispel.
|
||||
- Separata biljetter på svårare banor → biljettköpsminispel (rätt biljett).
|
||||
- Kort i telefonen: speed-buff + procentchans för omskanning. Batteri som
|
||||
tar slut på långa banor → tvingar till biljett.
|
||||
- Minispel på tåget: få plats, komma av, gå av på rätt station.
|
||||
- **Teknik:** `internal/minigame/*` med gemensamt gränssnitt
|
||||
(`Start(seed) / Update / Result`), all slump via del-seeds.
|
||||
- **Plånbok** (`sim.Wallet`, följer med mellan banor): IC-kort (2000 ¥),
|
||||
kontanter (5000 ¥), ev. pappersbiljett, kortet i telefonen + batteri,
|
||||
totalt spenderat (poäng i M7). Spärren drar från kortet; kiosken också.
|
||||
- **Påfyllning** (automaten T): minispel – hitta チャージ bland japanska
|
||||
knappar i seedad ordning (fel knapp = straffsekund), välj belopp, håll
|
||||
Enter för att mata in sedlar. Kontanter → kort.
|
||||
- **Biljettbanor** (`ticketRequired`, bana 002): spärren kräver
|
||||
pappersbiljett i stället för kort. Automaten visar en taxetavla med
|
||||
resmål på japanska i seedad ordning – köp rätt resmål kontant. Tåget
|
||||
släpper bara på den vars biljett gäller dit; biljetten förbrukas.
|
||||
- **Kortet i telefonen** (P i menyn, `-phone`): fart ×1,1, men 15 %
|
||||
seedad chans per spärr att behöva skanna igen (1,5 s stillastående).
|
||||
Batteriet laddar ur på 15 min; dött = kortet oanvändbart → köp biljett.
|
||||
- **Fullt tåg** (`crowded`, 002:s rätta tåg): tidsminispel – tryck Enter
|
||||
när markören är i den gröna zonen, två försök, annars går tåget
|
||||
(räknas som missat tåg, M7).
|
||||
- **Tågresan** (alla banor): stationerna passerar med 次は-utrop; kliv av
|
||||
med Enter vid resmålet. Fel station eller att åka förbi förlorar banan;
|
||||
på fel tåg finns resmålet inte på linjen. Namnen renderas genom
|
||||
kunskapen, med romaji efter svårighetens engelska-andel. `rideStops`
|
||||
styr längden (3 standard, 002 har 4).
|
||||
- **Teknik:** `internal/minigame` (ren Go, gemensamt `Game`-gränssnitt,
|
||||
all slump från del-seeds, 5 tester), `sim.Run.StepMini` (klockan och
|
||||
sällskapet tickar, rörelsen pausar), vyer i `internal/game/minigame_view.go`,
|
||||
skriptkommandon `hold N` och `waitstop`.
|
||||
- **Klar när:** varje minispel är deterministiskt för en seed (test) och
|
||||
spelbart.
|
||||
spelbart; `TestTicketLevelFlow` spelar hela 002 headless: fel biljett
|
||||
stoppas, rätt biljett, spärr, trängsel, resa, vinst. ✓
|
||||
|
||||
### M7 – Svårighet, tid, poäng och debuffar
|
||||
|
||||
@@ -277,6 +297,25 @@ på **brasse-linux01-runnern** (label `linux-amd64`), aldrig på Pi5:n.
|
||||
- Svårighetsprofil per bana i JSON.
|
||||
- **Teknik:** `internal/score`, `internal/sim/stats`.
|
||||
|
||||
### M7b – Tåg som kommer och går (Björns tillägg 2026-10-24)
|
||||
|
||||
- **Mål:** tågen ska kännas – man ska se och förstå när de kommer och går,
|
||||
särskilt när missade tåg kostar (M7).
|
||||
- **Ankomstindikator nära rälsen:** några sekunder före ankomst (från
|
||||
tidtabellen) tänds lampor vid perrongkanten och strålkastare syns i
|
||||
tunneln/vid kartkanten, bara för den som står nära rälsen.
|
||||
- **Vind:** när tåget kör in eller avgår blåser det längs perrongen –
|
||||
partiklar (damm, papper) och fladdrande kläder/hår på alla som står vid
|
||||
kanten. Kan senare påverka items (hattar som blåser av, M8).
|
||||
- **In- och utkörningsanimation:** tågvagnarna rullar in från kartkanten,
|
||||
bromsar, står (dörrar öppna) och accelererar ut – samma för bussar. Ersätter
|
||||
dagens "dyker upp/försvinner".
|
||||
- **Teknik:** ren logik i `sim` (`TrainPhase(t)`: approaching/arriving/
|
||||
dwelling/departing/away med fas 0–1 ur `level.Schedule`), partiklar och
|
||||
tweening i `internal/game`. Ljudet (M12) hakar på samma faser.
|
||||
- **Klar när:** faserna beräknas rätt ur tidtabellen (testat), indikatorn
|
||||
syns bara nära rälsen, tåget rullar in/ut i stället för att blinka till.
|
||||
|
||||
### M8 – Progression, items och sparfiler
|
||||
|
||||
- **Mål:** något att låsa upp och en anledning att fortsätta.
|
||||
|
||||
Reference in New Issue
Block a user