// 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()} }