56 lines
2.6 KiB
Rust
56 lines
2.6 KiB
Rust
use std::collections::HashMap;
|
|
|
|
use crate::{constants::*, tile_data::TileType};
|
|
|
|
#[allow(clippy::large_enum_variant)]
|
|
pub enum Level {
|
|
Normal([&'static str; MAP_HEIGHT]),
|
|
Randomized(HashMap<TileType, u32>),
|
|
End,
|
|
}
|
|
|
|
pub fn get_level(index: u32) -> Level {
|
|
match index {
|
|
0 => Level::Randomized(HashMap::from([
|
|
(TileType::Slow, 15),
|
|
(TileType::Whip, 1),
|
|
(TileType::Stairs, 3),
|
|
(TileType::Gem, 8),
|
|
])),
|
|
1 => Level::Normal([
|
|
"LXXX2 2 2 2 2 2 2 2 2 2 2 2 2 +",
|
|
"+XXX 2 2 2 2 2 2 2 2 XXX ",
|
|
" XXX2 2 2 2 2 2 2 2 2 2 2 XTX ",
|
|
"+XXX 2 2 2 2 2 2 2 XXX ",
|
|
" XXX 2 2 2 2 2 2 2 2 2 2 ",
|
|
"+XXX 2 ",
|
|
" XXX 2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2 2 ",
|
|
"+XXX2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2 ",
|
|
" XXX 2 XXX2 W 2XXX 2 ",
|
|
"+XXX 2 XXX 2 FFFFF 2 XXX 2 2 ",
|
|
" XXX2 2 XXX F111F XXX ",
|
|
"+XXX2 XXX+ 3 3 W F1P1F W 3 3 +XXX 2 ",
|
|
"XXXX 2 XXX F111F XXX 2 2",
|
|
"WXXX 2 XXX 2 FFFFF 2 XXX 2 ",
|
|
"WXXX2 XXX2 W 2XXX 2 ",
|
|
"WXXX 2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2 ",
|
|
"WXXX 2 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2 ",
|
|
"WXXX2 2 ",
|
|
"WXXX 2 2 2 2 2 2 2 2 2 2 2 ",
|
|
"XXXX 2 2 2 2 2 2 2 2 2 2 2 XXX ",
|
|
"XXXX2 2 2 2 2 2 2 2 2 2 2 2 XTX ",
|
|
"XXXX 2 2 2 2 2 2 2 2 2 2 2 2 XXX ",
|
|
"CXXX 2 2 2 2 2 2 2 2 2 2 2 2 2 2 +",
|
|
]),
|
|
2 => Level::Randomized(HashMap::from([
|
|
(TileType::Slow, 60),
|
|
(TileType::Block, 25),
|
|
(TileType::Whip, 5),
|
|
(TileType::Stairs, 2),
|
|
(TileType::Gem, 10),
|
|
(TileType::Teleport, 3),
|
|
])),
|
|
40 => Level::End,
|
|
_ => Level::Randomized(HashMap::new()),
|
|
}
|
|
}
|