49 lines
1.3 KiB
Rust
49 lines
1.3 KiB
Rust
mod tiles;
|
|
|
|
pub struct World {
|
|
xsize: usize,
|
|
ysize: usize,
|
|
zsize: usize,
|
|
tiles: Vec<Vec<Vec<tiles::Tile>>>,
|
|
}
|
|
|
|
impl World {
|
|
pub fn get_tile_at(&self, x: usize, y: usize, z: usize) -> &tiles::Tile{
|
|
&self.tiles[x][y][z]
|
|
}
|
|
pub fn generate(&mut self) {
|
|
self.tiles = get_vec3(self.xsize, self.ysize, self.zsize);
|
|
for x in 0..self.xsize {
|
|
for y in 0..self.ysize {
|
|
for z in 0..self.zsize {
|
|
let tile = tiles::Tile::new(tiles::Tiletypes::Dirt);
|
|
self.tiles[x][y][z] = tile;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
pub fn new(xsize: usize, ysize: usize, zsize: usize) -> World {
|
|
World {
|
|
xsize,
|
|
ysize,
|
|
zsize,
|
|
tiles: get_vec3(xsize, ysize, zsize),
|
|
}
|
|
}
|
|
}
|
|
|
|
fn get_vec3(xsize: usize, ysize: usize, zsize: usize) -> Vec<Vec<Vec<tiles::Tile>>> {
|
|
let mut zvec: Vec<tiles::Tile> = Vec::with_capacity(zsize);
|
|
zvec.resize(zsize, tiles::Tile::new(tiles::Tiletypes::Air));
|
|
|
|
let mut yvec: Vec<Vec<tiles::Tile>> = Vec::with_capacity(ysize);
|
|
yvec.resize(ysize, zvec.clone());
|
|
|
|
let mut xvec: Vec<Vec<Vec<tiles::Tile>>> = Vec::with_capacity(xsize);
|
|
xvec.resize(ysize, yvec.clone());
|
|
|
|
yvec.push(zvec);
|
|
xvec.push(yvec);
|
|
xvec
|
|
}
|