package game import ( "image/color" "math" "strings" "github.com/hajimehoshi/ebiten/v2" "github.com/hajimehoshi/ebiten/v2/vector" ) // Överstimulerande UI (level.Overload): en rullande reklamticker i // blinkande färger under HUD:en, och fler affischer på väggarna. Texten är // reklamfraser som inte betyder något för spelet – det är poängen. var adPhrases = []string{"大セール 半額!", "新発売 ラーメン", "免税 お土産", "駅弁 人気No.1", "本日限り 特価", "ポイント2倍", "新宿 ショッピング", "温泉 旅行 キャンペーン"} const tickerSpeed = 30.0 // px/s // drawTicker ritar reklamtickern (bara med Overload och när inget annat // ligger där). func (s *LevelScene) drawTicker(g *Game, screen *ebiten.Image) { r := s.run if !r.Level.Overload || r.Mini != nil || r.Outcome != 0 || s.tips.current != "" { return } a := g.Assets text := strings.Join(adPhrases, " ★ ") + " ★ " w := a.Width(text) if w == 0 { return } y := 26 blink := math.Mod(r.Time, 1.0) < 0.5 bg, fg := color.RGBA{120, 30, 60, 230}, color.RGBA{255, 230, 120, 255} if blink { bg, fg = color.RGBA{40, 60, 140, 230}, color.RGBA{255, 255, 255, 255} } vector.DrawFilledRect(screen, 0, float32(y), ScreenW, LineH+2, bg, false) x := ScreenW - int(math.Mod(r.Time*tickerSpeed, float64(w+ScreenW))) for _, sx := range []int{x, x + w} { if sx < ScreenW && sx+w > 0 { a.Draw(screen, text, sx, y+1, fg) } } } // clutterLevel är den visuella röran: banans clutter, maximal med Overload. func (s *LevelScene) clutterLevel() int { if s.run.Level.Overload { return 3 } return s.run.Level.Clutter }