Chapter 20
This commit is contained in:
20
src/main.rs
20
src/main.rs
@@ -59,6 +59,7 @@ pub enum RunState {
|
||||
NextLevel,
|
||||
ShowRemoveItem,
|
||||
GameOver,
|
||||
MagicMapReveal { row: i32 },
|
||||
}
|
||||
|
||||
pub struct State {
|
||||
@@ -284,6 +285,10 @@ impl GameState for State {
|
||||
RunState::PlayerTurn => {
|
||||
self.run_systems();
|
||||
new_run_state = RunState::MonsterTurn;
|
||||
match *self.ecs.fetch::<RunState>() {
|
||||
RunState::MagicMapReveal { .. } => { new_run_state = RunState::MagicMapReveal { row: 0 } }
|
||||
_ => { new_run_state = RunState::MonsterTurn; }
|
||||
}
|
||||
}
|
||||
RunState::MonsterTurn => {
|
||||
self.run_systems();
|
||||
@@ -416,6 +421,20 @@ impl GameState for State {
|
||||
}
|
||||
}
|
||||
}
|
||||
RunState::MagicMapReveal {
|
||||
row
|
||||
} => {
|
||||
let mut map = self.ecs.fetch_mut::<Map>();
|
||||
for x in 0..MAP_WIDTH {
|
||||
let idx = map.xy_idx(x as i32, row);
|
||||
map.revealed_tiles[idx] = true;
|
||||
}
|
||||
if row as usize == MAP_HEIGHT - 1 {
|
||||
new_run_state = RunState::MonsterTurn;
|
||||
} else {
|
||||
new_run_state = RunState::MagicMapReveal {row: row + 1}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
@@ -471,6 +490,7 @@ fn main() -> rltk::BError {
|
||||
gs.ecs.register::<HungerClock>();
|
||||
gs.ecs.register::<Heals>();
|
||||
gs.ecs.register::<ProvidesFood>();
|
||||
gs.ecs.register::<MagicMapper>();
|
||||
|
||||
gs.ecs.insert(SimpleMarkerAllocator::<SerializeMe>::new());
|
||||
|
||||
|
Reference in New Issue
Block a user