2 use core::render::Renderer;
3 use sprites::SpriteManager;
7 pub use self::lvlgen::LevelGenerator;
9 ////////// LEVEL ///////////////////////////////////////////////////////////////
13 pub gravity: Point<f64>,
15 walls: Vec<Vec<Point<isize>>>,
19 // pub fn new(gravity: Point<f64>) -> Self {
20 // let seed = std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_secs() as u32;
21 // let mut lvl = Level { gravity, grid: Grid::generate(seed, 10), iterations: 10, walls: vec!() };
22 // lvl.filter_regions();
26 pub fn render(&mut self, renderer: &mut Renderer, _sprites: &SpriteManager) {
27 renderer.canvas().set_draw_color((64, 64, 64));
28 let size = self.grid.cell_size;
29 for x in 0..self.grid.width {
30 for y in 0..self.grid.height {
31 if self.grid.cells[x][y] {
32 renderer.canvas().fill_rect(sdl2::rect::Rect::new(x as i32 * size as i32, y as i32 * size as i32, size as u32, size as u32)).unwrap();
37 let off = (size / 2) as i32;
38 for wall in &self.walls {
39 for w in wall.windows(2) {
40 renderer.draw_line((w[0].x as i32 + off, w[0].y as i32 + off), (w[1].x as i32 + off, w[1].y as i32 + off), (255, 255, 0));
42 let last = wall.len() - 1;
43 renderer.draw_line((wall[0].x as i32 + off, wall[0].y as i32 + off), (wall[last].x as i32 + off, wall[last].y as i32 + off), (255, 255, 0));
48 ////////// GRID ////////////////////////////////////////////////////////////////
55 pub cells: Vec<Vec<T>>,