aboutsummaryrefslogtreecommitdiff
path: root/go/ui/buffer.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/ui/buffer.go')
-rw-r--r--go/ui/buffer.go39
1 files changed, 12 insertions, 27 deletions
diff --git a/go/ui/buffer.go b/go/ui/buffer.go
index cc9f2377..e0e6b001 100644
--- a/go/ui/buffer.go
+++ b/go/ui/buffer.go
@@ -5,6 +5,8 @@ import (
"github.com/hajimehoshi/ebiten/v2"
"github.com/hajimehoshi/ebiten/v2/text"
+
+ "muhq.space/muhqs-game/go/font"
)
var (
@@ -13,47 +15,30 @@ var (
)
type Buffer struct {
- X, Y int
- Width, Height int
- img *ebiten.Image
- lines []string
- pos int
+ WidgetBase
+ lines []string
+ pos int
}
func NewBuffer(x, y int, width, height int) *Buffer {
- return &Buffer{x, y, width, height, nil, []string{}, 0}
+ b := &Buffer{NewWidgetBase(x, y, width, height), []string{}, 0}
+ b.renderImpl = func() *ebiten.Image { return b.render() }
+ return b
}
-func (b *Buffer) render() {
+func (b *Buffer) render() *ebiten.Image {
img := ebiten.NewImage(b.Width, b.Height)
img.Fill(BUFFER_BACKGROUND)
y := 0
for _, line := range b.lines[b.pos:] {
- bounds := text.BoundString(Font, line)
+ bounds := text.BoundString(font.Font, line)
y += bounds.Dy()
if y > b.Height {
break
}
- text.Draw(img, line, Font, 0, y, BUFFER_FOREGROUND)
- }
- b.img = img
-}
-
-func (b *Buffer) Draw(screen *ebiten.Image) {
- if b.img == nil {
- b.render()
+ text.Draw(img, line, font.Font, 0, y, BUFFER_FOREGROUND)
}
- op := &ebiten.DrawImageOptions{}
- op.GeoM.Translate(float64(b.X), float64(b.Y))
- screen.DrawImage(b.img, op)
-}
-
-func (b *Buffer) FindObjectAt(x, y int) interface{} {
- return nil
-}
-
-func (b *Buffer) ForceRedraw() {
- b.img = nil
+ return img
}
func (b *Buffer) AddLines(lines []string) {