From fe7eef77704f095377ffb35e2c331f3af6a484e8 Mon Sep 17 00:00:00 2001 From: Alex Page Date: Thu, 3 Feb 2022 20:16:33 -0500 Subject: [PATCH] Add changing levels when touching stairs --- src/input/player.rs | 2 +- src/main.rs | 3 ++- src/resources/mod.rs | 1 + src/state.rs | 22 ++++++++++++++++++++-- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/input/player.rs b/src/input/player.rs index 1d5c416..df9906b 100644 --- a/src/input/player.rs +++ b/src/input/player.rs @@ -93,7 +93,7 @@ fn try_step(point: Point, _world: &World, resources: &mut Resources) -> bool { true } crate::tile_data::TileType::Stairs => { - // TODO: Go to next level + resources.should_advance_level = true; true } crate::tile_data::TileType::Chest => todo!(), diff --git a/src/main.rs b/src/main.rs index 6a847bd..cd82959 100644 --- a/src/main.rs +++ b/src/main.rs @@ -57,7 +57,8 @@ fn main() -> BError { sound_effects, sound_output, selected_difficulty: Some(selected_difficulty), - flashing_message: None, + flashing_message: Some(FlashingMessage::from("Press any key to begin this level.")), + should_advance_level: false, }; // let descent_sounds: Vec = (20..100) diff --git a/src/resources/mod.rs b/src/resources/mod.rs index 4e79285..ab7b5cd 100644 --- a/src/resources/mod.rs +++ b/src/resources/mod.rs @@ -27,4 +27,5 @@ pub struct Resources { pub sound_effects: SoundEffects, pub sound_output: SoundOutput, pub flashing_message: Option, + pub should_advance_level: bool, } diff --git a/src/state.rs b/src/state.rs index d09162d..101e160 100644 --- a/src/state.rs +++ b/src/state.rs @@ -1,5 +1,6 @@ -use crate::resources::Resources; -use crate::{graphics, input, systems}; +use crate::resources::flashing_message::FlashingMessage; +use crate::resources::{Map, Resources}; +use crate::{graphics, input, levels, systems}; use bracket_lib::prelude::*; use hecs::World; @@ -13,6 +14,10 @@ impl GameState for State { input::handle(&mut self.world, &mut self.resources, bterm); systems::run(&mut self.world, &mut self.resources); graphics::draw(&self.world, &mut self.resources, bterm); + + if self.resources.should_advance_level { + self.next_level(); + } } } @@ -20,4 +25,17 @@ impl State { pub fn new(world: World, resources: Resources) -> Self { State { world, resources } } + + fn next_level(&mut self) { + self.resources.level_number += 1; + + self.world.clear(); + self.resources.map = Map::from(levels::get_level(self.resources.level_number)); + self.resources.map.spawn_entities(&mut self.world); + + self.resources.flashing_message = + Some(FlashingMessage::from("Press any key to begin this level.")); + + self.resources.should_advance_level = false; + } }