blooblib/tilemap.go

32 lines
740 B
Go
Raw Normal View History

2024-03-23 05:15:23 +01:00
package bloob
type Tilemap struct {
tiles []int
Size Vec2i
Tileset []*Image
}
func NewTilemap(size Vec2i, tileset []*Image) *Tilemap {
return &Tilemap{tiles: make([]int, size.Size()), Size: size, Tileset: tileset}
}
func (tilemap *Tilemap) Set(pos Vec2i, val int) {
if pos.X >= 0 && pos.Y >= 0 && pos.X < tilemap.Size.X && pos.Y < tilemap.Size.Y {
tilemap.tiles[pos.X+pos.Y*tilemap.Size.X] = val
}
}
func (tilemap *Tilemap) Get(pos Vec2i) int {
if pos.X >= 0 && pos.Y >= 0 && pos.X < tilemap.Size.X && pos.Y < tilemap.Size.Y {
return tilemap.tiles[pos.X+pos.Y*tilemap.Size.X]
} else {
return 0
}
}
func (tilemap *Tilemap) Clear(val int) {
for i := 0; i < len(tilemap.tiles); i += 1 {
tilemap.tiles[i] = val
}
}