Files
old-9heroja/terrain/terrain.go
2023-11-19 14:19:34 +01:00

55 lines
1.0 KiB
Go

package terrain
import (
"bytes"
"github.com/hajimehoshi/ebiten/v2"
"gitlab.com/kbr4/9heroja/resources"
"image"
"log"
)
var (
grassImage *ebiten.Image
)
type Terrain struct {
positionX float64
positionY float64
}
func (t *Terrain) DrawTerrain(screen *ebiten.Image) {
screenWidth := screen.Bounds().Max.X
screenHeight := screen.Bounds().Max.Y
offsetX := int(t.positionX) % 64
offsetY := int(t.positionY) % 64
op := &ebiten.DrawImageOptions{}
for i := -1; i <= screenWidth/64+1; i++ {
for j := -1; j <= screenHeight/64+1; j++ {
// ground
op.GeoM.Reset()
op.GeoM.Translate(float64(i*64+offsetX), float64(j*64+offsetY))
screen.DrawImage(grassImage.SubImage(image.Rect(32, 160, 32+64, 160+64)).(*ebiten.Image), op)
}
}
}
func init() {
img, _, err := image.Decode(bytes.NewReader(resources.Grass_png))
if err != nil {
log.Fatal(err)
}
grassImage = ebiten.NewImageFromImage(img)
}
func NewTerrain() *Terrain {
return &Terrain{
positionX: 0,
positionY: 0,
}
}
func (t *Terrain) GoDown() {
t.positionY += 1
}