First run at basic structure

This commit is contained in:
2025-11-19 01:19:03 -07:00
commit bd33e7e123
10 changed files with 699 additions and 0 deletions

52
internal/ui/hud/hud.go Normal file
View File

@@ -0,0 +1,52 @@
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)
}