42 lines
867 B
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
|
|
}
|