1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
use darkcloud2_levelgen::{ Tile, Level, TileTemplate, Region, VecRegion, place_template,
connect_rooms, create_deadend, tunnel_branches, pretty_print, random_dungeon, create_templates};
use rand::{Rng, SeedableRng};
use rand::rngs::SmallRng;
use rand::thread_rng;
fn main() {
let mut thread_rng = thread_rng();
let mut rng = SmallRng::from_seed([14;16]);
let templates = create_templates();
let template = &templates[0];
let mut level: VecRegion<Option<Tile>> = Region::new_with(15, 11);
let mut level = Level::new(Box::new(level));
let res = place_template(&mut level, template, 0, 0);
let res = place_template(&mut level, template, 3, 7);
let res = place_template(&mut level, template, 5, 2);
let res = place_template(&mut level, template, 8, 7);
let res = connect_rooms(&mut level, 0, 1, &mut rng);
let res = connect_rooms(&mut level, 2, 1, &mut rng);
let res = connect_rooms(&mut level, 3, 2, &mut rng);
create_deadend(&mut level, &mut rng);
tunnel_branches(&mut level, &mut rng);
tunnel_branches(&mut level, &mut rng);
tunnel_branches(&mut level, &mut rng);
println!("{:?}", res);
pretty_print(&level);
let templates = create_templates();
for _ in 0..10 {
let l = random_dungeon(&templates, &mut rng);
if l.is_ok() {
pretty_print(&l.unwrap());
}
}
}
|