last_light/render/raw.go

47 lines
772 B
Go
Raw Normal View History

2024-04-24 17:11:33 +03:00
package render
import (
"mvvasilev/last_light/util"
"github.com/gdamore/tcell/v2"
"github.com/gdamore/tcell/v2/views"
"github.com/google/uuid"
)
type Raw struct {
id uuid.UUID
buffer [][]rune
position util.Position
style tcell.Style
}
func CreateRawDrawable(x, y uint16, style tcell.Style, buffer ...string) *Raw {
r := new(Raw)
r.position = util.PositionAt(x, y)
r.buffer = make([][]rune, 0)
for _, row := range buffer {
r.buffer = append(r.buffer, []rune(row))
}
r.style = style
return r
}
func (r *Raw) UniqueId() uuid.UUID {
return r.id
}
func (r *Raw) Draw(v views.View) {
x := r.position.X()
y := r.position.Y()
for h, row := range r.buffer {
for i, ru := range row {
v.SetContent(x+i, y+h, ru, nil, r.style)
}
}
}