From a4875fc79bba0040a560850a0cd38d757665b76e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 18 Jul 2025 20:05:05 +0200 Subject: [PATCH] Define maze struct --- world/maze.go | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 world/maze.go diff --git a/world/maze.go b/world/maze.go new file mode 100644 index 0000000..fde5281 --- /dev/null +++ b/world/maze.go @@ -0,0 +1,52 @@ +package world + +import ( + "pacman/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 +}