here_be_dragons/src/dungeon/map.rs
2020-08-31 14:13:52 +02:00

48 lines
1.1 KiB
Rust

#[derive(PartialEq, Copy, Clone, Eq, Hash, Debug)]
pub enum TileType {
Wall, Floor
}
#[derive(Default, Clone)]
pub struct Map {
pub tiles : Vec<TileType>,
pub width : usize,
pub height : usize,
}
impl Map {
/// Generates an empty map, consisting entirely of solid walls
pub fn new(width: usize, height: usize) -> Map {
let map_tile_count = width*height;
Map{
tiles : vec![TileType::Wall; map_tile_count],
width,
height
}
}
pub fn at(&self, x: usize, y: usize) -> TileType {
let idx = y * self.width + x;
self.tiles[idx]
}
}
/// ------------------------------------------------------------------------------------------------
/// Module unit tests
/// ------------------------------------------------------------------------------------------------
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_new_map() {
let map = Map::new(10, 10);
for i in 0..10 {
for j in 0..10 {
assert_eq!(map.at(i, j), TileType::Wall);
}
}
}
}