summaryrefslogtreecommitdiff
path: root/src/bin/main.rs
blob: 0806dfdf84c0056c696767b5fadcdd0b96f7a9dd (plain)
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());
        }
    }
}