gohan-bunnymark/system/render.go

42 lines
867 B
Go

package system
import (
"code.rocketnine.space/tslocum/gohan-bunnymark/world"
"github.com/hajimehoshi/ebiten/v2"
"code.rocketnine.space/tslocum/gohan"
"code.rocketnine.space/tslocum/gohan-bunnymark/component"
)
type Render struct {
Position *component.Position
Sprite *component.Sprite
Hue *component.Hue
op *ebiten.DrawImageOptions
}
func NewRender() *Render {
return &Render{
op: &ebiten.DrawImageOptions{},
}
}
func (r *Render) Update(_ gohan.Entity) error {
return gohan.ErrUnregister
}
func (r *Render) Draw(_ gohan.Entity, screen *ebiten.Image) error {
op := r.op
op.GeoM.Reset()
op.ColorM.Reset()
sw, sh := float64(world.ScreenWidth), float64(world.ScreenHeight)
op.GeoM.Translate(r.Position.X*sw, r.Position.Y*sh)
if *r.Hue.Colorful {
op.ColorM.RotateHue(r.Hue.Value)
}
screen.DrawImage(r.Sprite.Image, op)
return nil
}