2022-01-09 17:10:40 +00:00
|
|
|
package world
|
|
|
|
|
2022-01-10 05:21:06 +00:00
|
|
|
import (
|
|
|
|
"github.com/hajimehoshi/ebiten/v2"
|
|
|
|
)
|
2022-01-09 17:10:40 +00:00
|
|
|
|
|
|
|
type Tile struct {
|
2022-01-10 21:15:03 +00:00
|
|
|
Sprite *ebiten.Image
|
|
|
|
EnvironmentSprite *ebiten.Image
|
|
|
|
HoverSprite *ebiten.Image
|
2022-01-09 17:10:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type GameLevel struct {
|
|
|
|
Tiles [][][]*Tile
|
|
|
|
|
|
|
|
size int
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewLevel(size int) *GameLevel {
|
|
|
|
l := &GameLevel{
|
|
|
|
size: size,
|
|
|
|
}
|
2022-01-10 21:15:03 +00:00
|
|
|
const startingLayers = 2
|
|
|
|
for i := 0; i < startingLayers; i++ {
|
|
|
|
l.AddLayer()
|
|
|
|
}
|
2022-01-09 17:10:40 +00:00
|
|
|
return l
|
|
|
|
}
|
|
|
|
|
|
|
|
func (l *GameLevel) AddLayer() {
|
|
|
|
tileMap := make([][]*Tile, l.size)
|
|
|
|
for x := 0; x < l.size; x++ {
|
|
|
|
tileMap[x] = make([]*Tile, l.size)
|
2022-01-10 21:15:03 +00:00
|
|
|
for y := 0; y < l.size; y++ {
|
|
|
|
tileMap[x][y] = &Tile{}
|
|
|
|
}
|
2022-01-09 17:10:40 +00:00
|
|
|
}
|
|
|
|
l.Tiles = append(l.Tiles, tileMap)
|
|
|
|
}
|
2022-01-10 05:21:06 +00:00
|
|
|
|
|
|
|
func (l *GameLevel) ClearHoverSprites() {
|
|
|
|
for i := range l.Tiles {
|
|
|
|
for x := range l.Tiles[i] {
|
|
|
|
for _, tile := range l.Tiles[i][x] {
|
|
|
|
if tile == nil {
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
tile.HoverSprite = nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|