M9b: folk, filer, reklam, sorl och vagnval
All checks were successful
release / build-release (push) Successful in 1m33s
All checks were successful
release / build-release (push) Successful in 1m33s
Folk på stationen (NPC:er som vandrar, kliver av tåg och går mot utgången, blockerar spelaren men inte varandra), vänster-/högerfiler som bromsar på fel sida, bredare gångar, reklamaffischer (clutter), japanskt sorl i loop (noise), vagnval med kvinnovagn (stort avdrag med man i sällskapet, tidsstyrd), kömarkeringar på perrongen, trängsel per vagn (bonus för tom vagn, svettig-debuff och svårare resa i full vagn, släpp förbi passagerare) och att folk kliver av innan man får gå på. Ny bana 005 Ueno. Skärmdumpsverktyget kan filtrera på bana/skript. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -30,9 +30,61 @@ func (s *LevelScene) drawMinigame(g *Game, screen *ebiten.Image) {
|
||||
s.drawCrowd(a, screen, m, panel)
|
||||
case *minigame.Ride:
|
||||
s.drawRide(a, screen, m, panel)
|
||||
case *minigame.CarPick:
|
||||
s.drawCarPick(a, screen, m, panel)
|
||||
}
|
||||
}
|
||||
|
||||
// drawCarPick: vagnarna i rad, rosa för kvinnovagn, figurer för trängsel,
|
||||
// kömarkeringar under, och en fas där folk kliver av först.
|
||||
func (s *LevelScene) drawCarPick(a *Assets, screen *ebiten.Image, m *minigame.CarPick, p image.Rectangle) {
|
||||
x, y := p.Min.X+8, p.Min.Y+8
|
||||
a.DrawBig(screen, "乗車", x, y, colKnown)
|
||||
a.Draw(screen, a.T("mini.car.title"), x+36, y+2, colText)
|
||||
y += 24
|
||||
if m.Alighting > 0 {
|
||||
a.Draw(screen, a.T("mini.car.alighting"), x, y, colWarn)
|
||||
w := float32(p.Dx() - 16)
|
||||
vector.DrawFilledRect(screen, float32(x), float32(y+LineH+2), w, 4, colBar, false)
|
||||
vector.DrawFilledRect(screen, float32(x), float32(y+LineH+2), w*float32(1-m.Alighting/minigame.AlightSec), 4, colKnown, false)
|
||||
} else {
|
||||
a.Draw(screen, a.T("mini.car.pick"), x, y, colDim)
|
||||
}
|
||||
y += LineH + 12
|
||||
carW := min(64, (p.Dx()-16)/max(1, len(m.Cars))-4)
|
||||
for i, c := range m.Cars {
|
||||
cx := x + i*(carW+4)
|
||||
body := color.RGBA{230, 234, 240, 255}
|
||||
if c.WomenOnly {
|
||||
body = color.RGBA{255, 160, 205, 255}
|
||||
}
|
||||
vector.DrawFilledRect(screen, float32(cx), float32(y), float32(carW), 30, body, false)
|
||||
vector.DrawFilledRect(screen, float32(cx), float32(y+30), float32(carW), 3, colBad, false)
|
||||
if i == m.Cursor && m.Alighting <= 0 {
|
||||
vector.DrawFilledRect(screen, float32(cx), float32(y-4), float32(carW), 2, colKnown, false)
|
||||
}
|
||||
a.Draw(screen, fmt.Sprintf("%d%s", c.Index, a.T("hud.car_suffix_ja")), cx+3, y+2, colPanel)
|
||||
// figurer = trängsel
|
||||
for k := 0; k <= c.Crowd; k++ {
|
||||
px := cx + 4 + k*7
|
||||
vector.DrawFilledRect(screen, float32(px), float32(y+16), 4, 10, color.RGBA{60, 70, 100, 255}, false)
|
||||
vector.DrawFilledRect(screen, float32(px), float32(y+13), 4, 3, color.RGBA{240, 200, 160, 255}, false)
|
||||
}
|
||||
if c.WomenOnly {
|
||||
a.Draw(screen, "女性専用", cx+2, y+34, color.RGBA{255, 150, 200, 255})
|
||||
} else {
|
||||
a.Draw(screen, a.T("car.crowd."+minigame.CrowdNames[c.Crowd]), cx+2, y+34, colDim)
|
||||
}
|
||||
// kömarkering under vagnen
|
||||
vector.DrawFilledRect(screen, float32(cx+carW/2-6), float32(y+48), 12, 2, colWarn, false)
|
||||
vector.DrawFilledRect(screen, float32(cx+carW/2-1), float32(y+50), 2, 4, colWarn, false)
|
||||
}
|
||||
if s.run.Party.HasMen() {
|
||||
a.Draw(screen, a.T("mini.car.men"), x, p.Max.Y-28, colWarn)
|
||||
}
|
||||
a.Draw(screen, a.T("mini.car.hint"), x, p.Max.Y-16, colDim)
|
||||
}
|
||||
|
||||
// jp ritar japansk text sedd genom spelarens kunskap (kända ord i gult).
|
||||
func (s *LevelScene) jp(a *Assets, screen *ebiten.Image, text string, x, y int) {
|
||||
rd := lang.Render(a.Dict, s.run.Know, text, UILang)
|
||||
@@ -171,6 +223,11 @@ func (s *LevelScene) drawRide(a *Assets, screen *ebiten.Image, m *minigame.Ride,
|
||||
if dest := lvl.Destination.Get("romaji"); dest != "" {
|
||||
hint = strings.Replace(hint, "%s", dest, 1)
|
||||
}
|
||||
if m.NeedsLetPass() {
|
||||
a.Draw(screen, a.T("mini.ride.let_pass"), x, p.Max.Y-30, colBad)
|
||||
} else if m.Crowd > 0 {
|
||||
a.Draw(screen, fmt.Sprintf("%s: %s", a.T("mini.ride.crowd"), a.T("car.crowd."+minigame.CrowdNames[m.Crowd])), x, p.Max.Y-30, colDim)
|
||||
}
|
||||
a.Draw(screen, hint, x, p.Max.Y-16, colGood)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user