Files
LilGuy/internal/ui/hud/hud.go

53 lines
1.1 KiB
Go

package hud
import (
"image/color"
"github.com/hajimehoshi/ebiten/v2"
"github.com/atridad/BigFeelings/internal/status"
)
// HUD overlay anchor.
type Overlay struct {
X int
Y int
Color color.Color
}
// Paints the HUD overlay.
func (o Overlay) Draw(screen *ebiten.Image, meters []status.Meter) {
if o.Color == nil {
o.Color = color.White
}
// Instruction text
instructions := Column{
Elements: []Element{
Label{Text: "Systems Prototype", Color: o.Color},
Label{Text: "Move with Arrow Keys / WASD", Color: o.Color},
Label{Text: "Track resource signals and plan ahead.", Color: o.Color},
},
Spacing: 7,
}
instructions.Draw(screen, 16, 16)
// Meter column
meterElements := make([]Element, 0, len(meters))
for _, meter := range meters {
meterElements = append(meterElements, Column{
Elements: []Element{
MeterLabel{Meter: meter, Color: o.Color},
Bar{Meter: meter, MaxWidth: 180, Height: 8, ShowBorder: false},
},
Spacing: 2,
})
}
meterPanel := Column{
Elements: meterElements,
Spacing: 16,
}
meterPanel.Draw(screen, o.X, o.Y)
}