package game import ( "fmt" "image/color" "github.com/hajimehoshi/ebiten/v2" "github.com/hajimehoshi/ebiten/v2/ebitenutil" "github.com/hajimehoshi/ebiten/v2/vector" "gitea.brasse-pc.eu/brasse/metro-puzzle-jp/internal/level" ) // ResultScene visas när spelaren nått en perrong. type ResultScene struct { from *LevelScene train *level.Train } // NewResultScene bygger resultatet för banan som just spelades. func NewResultScene(from *LevelScene, train *level.Train) *ResultScene { return &ResultScene{from: from, train: train} } func (r *ResultScene) correct() bool { return r.train != nil && r.train.Correct } func (r *ResultScene) Update(g *Game) error { switch { case inpututil_R(): s, err := NewLevelScene(g.Assets, r.from.id) if err != nil { return err } g.SetScene(s) case confirmJustPressed() || backJustPressed(): m, err := NewMenuScene(g.Assets) if err != nil { return err } g.SetScene(m) } return nil } func (r *ResultScene) Draw(g *Game, screen *ebiten.Image) { r.from.Draw(g, screen) // banan i bakgrunden bg := color.RGBA{24, 20, 37, 230} vector.DrawFilledRect(screen, 20, 40, ScreenW-40, 100, bg, false) accent := color.RGBA{228, 59, 68, 255} headline := g.Assets.T("level.wrong_train") if r.correct() { accent = color.RGBA{99, 199, 77, 255} headline = g.Assets.T("level.cleared") } vector.DrawFilledRect(screen, 20, 40, ScreenW-40, 3, accent, false) ebitenutil.DebugPrintAt(screen, headline, 28, 50) if r.train != nil { ebitenutil.DebugPrintAt(screen, fmt.Sprintf("%s -> %s", r.train.Line.Get("romaji"), r.train.Destination.Get("romaji")), 28, 66) // TODO(M3): japanska när fonten finns } ebitenutil.DebugPrintAt(screen, fmt.Sprintf("%s %.1fs %s %d", g.Assets.T("hud.time"), r.from.elapsed, g.Assets.T("hud.steps"), r.from.steps), 28, 86) ebitenutil.DebugPrintAt(screen, g.Assets.T("result.hint"), 28, 118) }