52 lines
1.0 KiB
Go
52 lines
1.0 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: "Big Feelings", Color: o.Color},
|
|
Label{Text: "Move with Arrow Keys / WASD", Color: o.Color},
|
|
Label{Text: "Hold Shift to Sprint", 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)
|
|
}
|