M13: titelskärm, språkval, tutorial, tips och pausmeny
All checks were successful
release / build-release (push) Successful in 1m40s

Björns feedback efter v0.1.0. Titelskärm med premissen i text och menyn
Fortsätt/Starta, Tutorial, Inställningar, Avsluta (Enter två gånger);
språkval första gången spelet startar. Tutorial i fem sidor med riktiga
sprites och en exempelskylt där resmålet markeras och resten tonas ned,
plus nyckeln 番線/方面/改札 och biljettipset. Kontextuella tips i spelet
tills första banan är klarad, och resmålets tecken markeras på skyltar
och avgångstavlor under tiden. Esc i en bana öppnar en pausmeny
(Fortsätt, Lämna banan, Inställningar, Avsluta spelet) i stället för att
lämna banan; Esc på bankartan går till titeln. Kortare lägestexter så att
bankartans rader ryms på svenska. Test för markeringen, docs, wiki och
skärmdumpar.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-25 17:13:32 +01:00
parent 86f8130735
commit f0a0bc1522
26 changed files with 622 additions and 32 deletions

View File

@@ -135,3 +135,26 @@ func (a *Assets) drawLines(dst drawTarget, lines []line, x, y int) {
}
}
}
// highlightLine är tutorialens sätt att läsa en skylt: resmålets japanska
// tecken i markeringsfärg, allt annat nedtonat.
func highlightLine(text, needle string, hi, dim color.Color) line {
if needle == "" || !strings.Contains(text, needle) {
return plainLine(text, dim)
}
var l line
for {
i := strings.Index(text, needle)
if i < 0 {
if text != "" {
l = append(l, span{text, dim})
}
return l
}
if i > 0 {
l = append(l, span{text[:i], dim})
}
l = append(l, span{needle, hi})
text = text[i+len(needle):]
}
}