Do geom on stack?

This commit is contained in:
Josh Deprez 2021-07-29 17:07:38 +10:00 committed by Josh Deprez
parent 76bcda2df5
commit b976b849b7
3 changed files with 6 additions and 7 deletions

View file

@ -11,7 +11,7 @@ import (
// PerfDisplay debugprints CurrentTPS and CurrentFPS in the top left.
type PerfDisplay struct{}
func (PerfDisplay) Draw(screen *ebiten.Image) {
func (PerfDisplay) Draw(screen *ebiten.Image, _ ebiten.GeoM) {
ebitenutil.DebugPrint(screen, fmt.Sprintf("TPS: %0.2f FPS: %0.2f", ebiten.CurrentTPS(), ebiten.CurrentFPS()))
}

View file

@ -12,9 +12,9 @@ type Updater interface {
}
// Drawer is a component that can draw itself. Draw is called often.
// DrawAfter is used to reorder components.
// Z is used to reorder components.
type Drawer interface {
Draw(*ebiten.Image)
Draw(screen *ebiten.Image, geom ebiten.GeoM)
Z() float64
}
@ -47,7 +47,7 @@ func (g *Game) Update() error {
func (g *Game) Draw(screen *ebiten.Image) {
for _, c := range g.Components {
if d, ok := c.(Drawer); ok {
d.Draw(screen)
d.Draw(screen, ebiten.GeoM{})
}
}
}

View file

@ -10,17 +10,16 @@ type Tilemap struct {
Map [][]Tile
Src *ebiten.Image // must be a horizontal tile set
TileSize int
GeoM ebiten.GeoM
ZPos
}
func (t *Tilemap) Draw(screen *ebiten.Image) {
func (t *Tilemap) Draw(screen *ebiten.Image, geom ebiten.GeoM) {
for j, row := range t.Map {
for i, tile := range row {
var op ebiten.DrawImageOptions
op.GeoM.Translate(float64(i*t.TileSize), float64(j*t.TileSize))
op.GeoM.Concat(t.GeoM)
op.GeoM.Concat(geom)
sx := tile.TileIndex() * t.TileSize
src := t.Src.SubImage(image.Rect(sx, 0, sx+t.TileSize, t.TileSize)).(*ebiten.Image)