1
0
Fork 0
pacman-go/game/world/maze.go

52 lines
824 B
Go

package world
import (
"pacman/game/assets"
)
const (
MAZE_WIDTH = assets.MAZE_WIDTH
MAZE_HEIGHT = assets.MAZE_HEIGHT
)
type Maze [MAZE_WIDTH * MAZE_HEIGHT]assets.Tile
// Create a new maze and load data.
func NewMaze(data []byte) Maze {
m := Maze{}
m.Load(data)
return m
}
// Load data into maze.
func (m *Maze) Load(data []byte) {
n_bytes := m.readMaze(data)
for i := n_bytes; i < len(m); i++ {
m[i] = 0
}
}
// Read maze data.
func (m *Maze) readMaze(data []byte) int {
i := 0
for _, x := range data {
if x == '\n' {
continue
}
m[i] = assets.Tile(x)
i++
if i >= len(m) {
break
}
}
return i
}
func (m Maze) At(x, y uint8) assets.Tile {
return m[uint16(x)+(uint16(y)*MAZE_WIDTH)]
}
func (m *Maze) Set(x, y uint8, value assets.Tile) {
m[uint16(x)+(uint16(y)*MAZE_WIDTH)] = value
}