dungeoncrawler/src/spawner.rs

48 lines
997 B
Rust
Raw Normal View History

2021-07-06 00:52:14 -05:00
use crate::prelude::*;
pub fn spawn_player(ecs: &mut World, pos: Point) {
ecs.push((
Player,
pos,
Render {
color: ColorPair::new(WHITE, BLACK),
glyph: to_cp437('@'),
},
2021-07-07 12:36:24 -05:00
Health {
current: 20,
max: 20,
},
2021-07-07 21:11:26 -05:00
Name("Player 1".to_string()),
2021-07-06 00:52:14 -05:00
));
}
pub fn spawn_monster(ecs: &mut World, rng: &mut RandomNumberGenerator, pos: Point) {
2021-07-07 21:11:26 -05:00
let (hp, name, glyph) = match rng.roll_dice(1, 10) {
1..=8 => goblin(),
_ => orc(),
};
ecs.push((
Enemy,
pos,
Render {
color: ColorPair::new(WHITE, BLACK),
2021-07-07 21:11:26 -05:00
glyph,
},
MovingRandomly,
2021-07-07 21:11:26 -05:00
Health {
current: hp,
max: hp,
},
Name(name),
));
}
2021-07-07 21:11:26 -05:00
fn goblin() -> (i32, String, FontCharType) {
(1, "Goblin".to_string(), to_cp437('g'))
}
fn orc() -> (i32, String, FontCharType) {
(2, "Orc".to_string(), to_cp437('o'))
}