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:
38
internal/minigame/minigame.go
Normal file
38
internal/minigame/minigame.go
Normal file
@@ -0,0 +1,38 @@
|
||||
// Package minigame innehåller de små spelen i spelet: fylla på kortet vid
|
||||
// automaten, köpa rätt biljett, få plats på ett fullt tåg och gå av på rätt
|
||||
// station. Ren logik utan Ebitengine; all slump kommer från en seed så att
|
||||
// ett minispel är exakt likadant varje gång för samma seed.
|
||||
//
|
||||
// Gemensamt mönster: skapa med en seed, mata Update med input varje
|
||||
// bildruta, läs Done/Success när det är klart. Renderingen görs av
|
||||
// internal/game per typ.
|
||||
package minigame
|
||||
|
||||
import "gitea.brasse-pc.eu/brasse/metro-puzzle-jp/internal/rng"
|
||||
|
||||
// Input är vad spelaren gjorde den här bildrutan.
|
||||
type Input struct {
|
||||
Move int // -1 / +1 (upp/vänster resp. ner/höger), 0 = inget
|
||||
Confirm bool // Enter tryckt (just nu)
|
||||
Hold bool // Enter hålls nere
|
||||
Cancel bool // Esc tryckt
|
||||
}
|
||||
|
||||
// Game är ett pågående minispel.
|
||||
type Game interface {
|
||||
Update(in Input, dt float64)
|
||||
Done() bool
|
||||
Success() bool
|
||||
}
|
||||
|
||||
// base är det gemensamma tillståndet.
|
||||
type base struct {
|
||||
done, success bool
|
||||
}
|
||||
|
||||
func (b *base) Done() bool { return b.done }
|
||||
func (b *base) Success() bool { return b.success }
|
||||
|
||||
func newRand(seed rng.Seed, context string) *randSrc {
|
||||
return &randSrc{seed.Derive(context).New()}
|
||||
}
|
||||
Reference in New Issue
Block a user