32 lines
740 B
Go
32 lines
740 B
Go
|
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
|
||
|
}
|
||
|
}
|