mod.rs 779 B

123456789101112131415161718192021222324252627
  1. use super::{Map, Rect, TileType, Position, spawner};
  2. mod simple_map;
  3. use simple_map::SimpleMapBuilder;
  4. mod bsp_dungeon;
  5. use bsp_dungeon::BspDungeonBuilder;
  6. mod common;
  7. use common::*;
  8. use specs::prelude::*;
  9. trait MapBuilder {
  10. fn build(new_depth: i32) -> (Map, Position);
  11. fn spawn(map : &Map, ecs : &mut World, new_depth: i32);
  12. }
  13. pub fn build_random_map(new_depth: i32) -> (Map, Position) {
  14. let mut rng = rltk::RandomNumberGenerator::new();
  15. let builder = rng.roll_dice(1, 2);
  16. println!("Builder roll: {}", builder);
  17. match builder {
  18. 2 => BspDungeonBuilder::build(new_depth),
  19. _ => SimpleMapBuilder::build(new_depth)
  20. }
  21. }
  22. pub fn spawn(map : &Map, ecs : &mut World, new_depth: i32) {
  23. BspDungeonBuilder::spawn(map, ecs, new_depth);
  24. }