From 531bde3928057af08bc9fdff590243180ba8d1d4 Mon Sep 17 00:00:00 2001 From: Vladimir V Maksimov Date: Tue, 12 May 2026 11:21:10 +0300 Subject: [PATCH] feat(render): add UI for score and game state --- cmd/game/main.go | 1 + internal/render/renderer.go | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/cmd/game/main.go b/cmd/game/main.go index 1d3e27f..9ae7c86 100644 --- a/cmd/game/main.go +++ b/cmd/game/main.go @@ -19,6 +19,7 @@ func (g *Game) Update() error { func (g *Game) Draw(screen *ebiten.Image) { g.renderer.DrawWorld(screen, g.matchManager.World) + g.renderer.DrawUI(screen, g.matchManager) } func (g *Game) Layout(outsideWidth, outsideHeight int) (int, int) { diff --git a/internal/render/renderer.go b/internal/render/renderer.go index 22b9f05..dcf09d3 100644 --- a/internal/render/renderer.go +++ b/internal/render/renderer.go @@ -1,12 +1,15 @@ package render import ( + "fmt" "image/color" "github.com/hajimehoshi/ebiten/v2" + "github.com/hajimehoshi/ebiten/v2/text" "github.com/hajimehoshi/ebiten/v2/vector" "github.com/soer/football/internal/entities" "github.com/soer/football/internal/game" + "golang.org/x/image/font/basicfont" ) type Renderer struct{} @@ -45,3 +48,20 @@ func (r *Renderer) DrawWorld(screen *ebiten.Image, world *game.World) { ) } } + +func (r *Renderer) DrawUI(screen *ebiten.Image, matchManager *game.MatchManager) { + scoreStr := fmt.Sprintf("Red: %d - Blue: %d", matchManager.ScoreRed, matchManager.ScoreBlue) + + var stateStr string + switch matchManager.State { + case game.Playing: + stateStr = "State: Playing" + case game.GoalPause: + stateStr = "State: Goal Pause" + case game.MatchEnded: + stateStr = "State: Match Ended" + } + + text.Draw(screen, scoreStr, basicfont.Face7x13, 10, 20, color.White) + text.Draw(screen, stateStr, basicfont.Face7x13, 10, 40, color.White) +}