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 } }