diff --git a/src/ai/encumbrance_system.rs b/src/ai/encumbrance_system.rs index 0244597..2a4407c 100644 --- a/src/ai/encumbrance_system.rs +++ b/src/ai/encumbrance_system.rs @@ -1,7 +1,7 @@ use crate::{ gamelog, Attributes, Burden, EquipmentChanged, Equipped, InBackpack, Item, Pools }; use specs::prelude::*; use std::collections::HashMap; -use crate::data::entity::CARRY_CAPACITY_PER_STRENGTH; +use crate::consts::entity::CARRY_CAPACITY_PER_STRENGTH; pub struct EncumbranceSystem {} @@ -20,7 +20,17 @@ impl<'a> System<'a> for EncumbranceSystem { ); fn run(&mut self, data: Self::SystemData) { - let (mut equip_dirty, entities, items, backpacks, wielded, mut pools, attributes, player, mut burdened) = data; + let ( + mut equip_dirty, + entities, + items, + backpacks, + wielded, + mut pools, + attributes, + player, + mut burdened, + ) = data; if equip_dirty.is_empty() { return; } @@ -50,7 +60,8 @@ impl<'a> System<'a> for EncumbranceSystem { pool.weight = *weight; if let Some(attr) = attributes.get(*entity) { let carry_capacity_lbs = - (attr.strength.base + attr.strength.modifiers) * CARRY_CAPACITY_PER_STRENGTH; + (attr.strength.base + attr.strength.modifiers) * + CARRY_CAPACITY_PER_STRENGTH; if (pool.weight as i32) > 3 * carry_capacity_lbs { // Overloaded burdened diff --git a/src/ai/energy_system.rs b/src/ai/energy_system.rs index da62467..8a68b69 100644 --- a/src/ai/energy_system.rs +++ b/src/ai/energy_system.rs @@ -1,4 +1,4 @@ -use crate::data::entity::*; +use crate::consts::entity::*; use crate::{ Burden, BurdenLevel, @@ -15,7 +15,7 @@ use crate::{ use bracket_lib::prelude::*; use specs::prelude::*; use crate::config::CONFIG; -use crate::data::events::*; +use crate::consts::events::*; pub struct EnergySystem {} diff --git a/src/ai/regen_system.rs b/src/ai/regen_system.rs index 8114c4e..1627b9d 100644 --- a/src/ai/regen_system.rs +++ b/src/ai/regen_system.rs @@ -12,7 +12,7 @@ use crate::{ Intrinsics, }; use specs::prelude::*; -use crate::data::events::*; +use crate::consts::events::*; pub struct RegenSystem {} diff --git a/src/ai/turn_status_system.rs b/src/ai/turn_status_system.rs index db3acaa..f996926 100644 --- a/src/ai/turn_status_system.rs +++ b/src/ai/turn_status_system.rs @@ -12,7 +12,7 @@ use crate::{ }; use bracket_lib::prelude::*; use specs::prelude::*; -use crate::data::events::*; +use crate::consts::events::*; pub struct TurnStatusSystem {} diff --git a/src/camera.rs b/src/camera.rs index 85ab0ec..c9835b8 100644 --- a/src/camera.rs +++ b/src/camera.rs @@ -2,8 +2,8 @@ use super::{ Hidden, Map, Mind, Position, Prop, Renderable, Pools }; use bracket_lib::prelude::*; use specs::prelude::*; use std::ops::Mul; -use super::data::visuals::{ VIEWPORT_W, VIEWPORT_H }; -use super::data::prelude::*; +use super::consts::visuals::{ VIEWPORT_W, VIEWPORT_H }; +use super::consts::prelude::*; const SHOW_BOUNDARIES: bool = false; @@ -147,7 +147,7 @@ pub fn render_camera(ecs: &World, ctx: &mut BTerm) { if map.visible_tiles[idx] { draw = true; } else { - fg = fg.mul(crate::data::visuals::NON_VISIBLE_MULTIPLIER); + fg = fg.mul(crate::consts::visuals::NON_VISIBLE_MULTIPLIER); // We don't darken BG, because get_tile_renderables_for_id handles this. } diff --git a/src/data/char_create.rs b/src/consts/char_create.rs similarity index 100% rename from src/data/char_create.rs rename to src/consts/char_create.rs diff --git a/src/data/entity.rs b/src/consts/entity.rs similarity index 100% rename from src/data/entity.rs rename to src/consts/entity.rs diff --git a/src/data/events.rs b/src/consts/events.rs similarity index 100% rename from src/data/events.rs rename to src/consts/events.rs diff --git a/src/data/ids.rs b/src/consts/ids.rs similarity index 100% rename from src/data/ids.rs rename to src/consts/ids.rs diff --git a/src/data/messages.rs b/src/consts/messages.rs similarity index 100% rename from src/data/messages.rs rename to src/consts/messages.rs diff --git a/src/data/mod.rs b/src/consts/mod.rs similarity index 69% rename from src/data/mod.rs rename to src/consts/mod.rs index cefe83f..9283b56 100644 --- a/src/data/mod.rs +++ b/src/consts/mod.rs @@ -10,3 +10,7 @@ pub mod sprites; pub mod prelude { pub use super::visuals::{ TILE_LAYER, ENTITY_LAYER, TEXT_LAYER, HP_BAR_LAYER }; } + +pub const TILESIZE: f32 = 16.0; +pub const DISPLAYWIDTH: u32 = 100; +pub const DISPLAYHEIGHT: u32 = 56; diff --git a/src/data/names.rs b/src/consts/names.rs similarity index 100% rename from src/data/names.rs rename to src/consts/names.rs diff --git a/src/data/sprites.rs b/src/consts/sprites.rs similarity index 100% rename from src/data/sprites.rs rename to src/consts/sprites.rs diff --git a/src/data/visuals.rs b/src/consts/visuals.rs similarity index 100% rename from src/data/visuals.rs rename to src/consts/visuals.rs diff --git a/src/damage_system.rs b/src/damage_system.rs index a4224a7..197d1cb 100644 --- a/src/damage_system.rs +++ b/src/damage_system.rs @@ -14,7 +14,7 @@ use super::{ }; use bracket_lib::prelude::*; use specs::prelude::*; -use crate::data::events; +use crate::consts::events; pub fn delete_the_dead(ecs: &mut World) { let mut dead: Vec = Vec::new(); diff --git a/src/effects/damage.rs b/src/effects/damage.rs index 74d1178..f689642 100644 --- a/src/effects/damage.rs +++ b/src/effects/damage.rs @@ -17,10 +17,10 @@ use crate::{ HasDamageModifiers, }; use crate::gui::with_article; -use crate::data::visuals::{ DEFAULT_PARTICLE_LIFETIME, LONG_PARTICLE_LIFETIME }; -use crate::data::messages::LEVELUP_PLAYER; -use crate::data::events::*; -use crate::data::messages::*; +use crate::consts::visuals::{ DEFAULT_PARTICLE_LIFETIME, LONG_PARTICLE_LIFETIME }; +use crate::consts::messages::LEVELUP_PLAYER; +use crate::consts::events::*; +use crate::consts::messages::*; use bracket_lib::prelude::*; use specs::prelude::*; diff --git a/src/effects/triggers.rs b/src/effects/triggers.rs index ac38ccb..5dd66dd 100644 --- a/src/effects/triggers.rs +++ b/src/effects/triggers.rs @@ -34,7 +34,7 @@ use crate::{ Position, Viewshed, }; -use crate::data::messages::*; +use crate::consts::messages::*; use bracket_lib::prelude::*; use specs::prelude::*; pub fn item_trigger(source: Option, item: Entity, target: &Targets, ecs: &mut World) { diff --git a/src/gamelog/events.rs b/src/gamelog/events.rs index bef5ff6..722cd16 100644 --- a/src/gamelog/events.rs +++ b/src/gamelog/events.rs @@ -1,7 +1,7 @@ use std::collections::{ HashSet, HashMap }; use std::sync::Mutex; -use crate::data::events::EVENT; -use crate::data::names::*; +use crate::consts::events::EVENT; +use crate::consts::names::*; lazy_static! { /// A count of each event that has happened over the run. i.e. "turns", "descended", "ascended" diff --git a/src/gamesystem.rs b/src/gamesystem.rs index 6644723..4024584 100644 --- a/src/gamesystem.rs +++ b/src/gamesystem.rs @@ -1,7 +1,7 @@ use super::{ Skill, Skills }; use crate::gui::{ Ancestry, Class }; -use crate::data::entity; -use crate::data::char_create::*; +use crate::consts::entity; +use crate::consts::char_create::*; use bracket_lib::prelude::*; use std::cmp::max; diff --git a/src/gui/character_creation.rs b/src/gui/character_creation.rs index bc6e68e..a67847e 100644 --- a/src/gui/character_creation.rs +++ b/src/gui/character_creation.rs @@ -8,8 +8,8 @@ use super::{ RunState, State, }; -use crate::data::entity; -use crate::data::char_create::*; +use crate::consts::entity; +use crate::consts::char_create::*; use crate::{ raws, Attribute, @@ -28,7 +28,7 @@ use bracket_lib::prelude::*; use serde::{ Deserialize, Serialize }; use specs::prelude::*; use std::collections::HashMap; -use crate::data::prelude::*; +use crate::consts::prelude::*; #[derive(Serialize, Deserialize, Copy, Clone, PartialEq)] pub enum Ancestry { diff --git a/src/gui/cheat_menu.rs b/src/gui/cheat_menu.rs index eae6f4c..3a7dec7 100644 --- a/src/gui/cheat_menu.rs +++ b/src/gui/cheat_menu.rs @@ -1,5 +1,9 @@ -use super::State; +use super::{ State }; use bracket_lib::prelude::*; +use notan::prelude::*; +use notan::draw::DrawTextSection; +use std::collections::HashMap; +use crate::consts::TILESIZE; #[derive(PartialEq, Copy, Clone)] pub enum CheatMenuResult { @@ -12,8 +16,52 @@ pub enum CheatMenuResult { GodMode, } -pub fn show_cheat_menu(_gs: &mut State, ctx: &mut BTerm) -> CheatMenuResult { - let (x_offset, y_offset) = (1, 10); +pub fn show_cheat_menu(_gs: &mut State, ctx: &mut App) -> CheatMenuResult { + let key = &ctx.keyboard; + for keycode in key.pressed.iter() { + match *keycode { + KeyCode::A => { + return CheatMenuResult::Ascend; + } + KeyCode::D => { + return CheatMenuResult::Descend; + } + KeyCode::H => { + return CheatMenuResult::Heal; + } + KeyCode::M => { + return CheatMenuResult::MagicMap; + } + KeyCode::G => { + return CheatMenuResult::GodMode; + } + KeyCode::Escape => { + return CheatMenuResult::Cancel; + } + _ => {} + }; + } + return CheatMenuResult::NoResponse; +} + +pub fn draw_cheat_menu( + draw: &mut notan::draw::Draw, + atlas: &HashMap, + font: ¬an::draw::Font +) { + let offsets = crate::camera::get_offset(); + const DEBUG_MENU: &str = + r#"DEBUG MENU! [aA-zZ][Esc.] + + a - ASCEND A FLOOR + d - DESCEND A FLOOR + h - HEAL TO FULL + m - MAGIC MAP REVEAL + g - GOD MODE"#; + draw.text(&font, DEBUG_MENU) + .position(1.0 + (offsets.x as f32) * TILESIZE, 1.0 + (offsets.y as f32) * TILESIZE) + .color(Color::RED); + /*let (x_offset, y_offset) = (1, 10); ctx.print_color( 1 + x_offset, 1 + y_offset, @@ -46,19 +94,5 @@ pub fn show_cheat_menu(_gs: &mut State, ctx: &mut BTerm) -> CheatMenuResult { y += 1; // Godmode ctx.set(x_offset + 2, y, RGB::named(YELLOW), RGB::named(BLACK), to_cp437('g')); - ctx.print(x_offset + 4, y, "GOD MODE"); - // Match keys - match ctx.key { - None => CheatMenuResult::NoResponse, - Some(key) => - match key { - VirtualKeyCode::A => CheatMenuResult::Ascend, - VirtualKeyCode::D => CheatMenuResult::Descend, - VirtualKeyCode::H => CheatMenuResult::Heal, - VirtualKeyCode::M => CheatMenuResult::MagicMap, - VirtualKeyCode::G => CheatMenuResult::GodMode, - VirtualKeyCode::Escape => CheatMenuResult::Cancel, - _ => CheatMenuResult::NoResponse, - } - } + ctx.print(x_offset + 4, y, "GOD MODE");*/ } diff --git a/src/gui/mod.rs b/src/gui/mod.rs index 5c3cccf..264ccc7 100644 --- a/src/gui/mod.rs +++ b/src/gui/mod.rs @@ -32,11 +32,11 @@ use super::{ Skills, Viewshed, BUC, - data::ids::get_local_col, + consts::ids::get_local_col, }; -use crate::data::prelude::*; -use crate::data::entity::CARRY_CAPACITY_PER_STRENGTH; -use crate::data::visuals::{ +use crate::consts::prelude::*; +use crate::consts::entity::CARRY_CAPACITY_PER_STRENGTH; +use crate::consts::visuals::{ TARGETING_LINE_COL, TARGETING_CURSOR_COL, TARGETING_AOE_COL, @@ -57,7 +57,7 @@ mod identify_menu; pub use identify_menu::*; mod tooltip; pub use cheat_menu::*; -use crate::data::events::*; +use crate::consts::events::*; mod farlook; pub use farlook::*; diff --git a/src/gui/tooltip.rs b/src/gui/tooltip.rs index ec321eb..3f2f37b 100644 --- a/src/gui/tooltip.rs +++ b/src/gui/tooltip.rs @@ -11,8 +11,8 @@ use super::{ RGB, }; use crate::TileType; -use crate::data::ids::*; -use crate::data::prelude::*; +use crate::consts::ids::*; +use crate::consts::prelude::*; use bracket_lib::prelude::*; use specs::prelude::*; diff --git a/src/inventory/collection_system.rs b/src/inventory/collection_system.rs index 2fb7276..08dcac2 100644 --- a/src/inventory/collection_system.rs +++ b/src/inventory/collection_system.rs @@ -14,7 +14,7 @@ use crate::{ WantsToPickupItem, }; use specs::prelude::*; -use crate::data::messages; +use crate::consts::messages; use bracket_lib::prelude::*; pub struct ItemCollectionSystem {} diff --git a/src/inventory/drop_system.rs b/src/inventory/drop_system.rs index 34084b4..686be03 100644 --- a/src/inventory/drop_system.rs +++ b/src/inventory/drop_system.rs @@ -14,7 +14,7 @@ use crate::{ WantsToDropItem, }; use specs::prelude::*; -use crate::data::messages; +use crate::consts::messages; use bracket_lib::prelude::*; pub struct ItemDropSystem {} diff --git a/src/inventory/equip_system.rs b/src/inventory/equip_system.rs index e21db20..1fd9c36 100644 --- a/src/inventory/equip_system.rs +++ b/src/inventory/equip_system.rs @@ -16,7 +16,7 @@ use crate::{ BUC, }; use specs::prelude::*; -use crate::data::messages; +use crate::consts::messages; use bracket_lib::prelude::*; pub struct ItemEquipSystem {} diff --git a/src/inventory/identification_system.rs b/src/inventory/identification_system.rs index ce4ad23..ce629be 100644 --- a/src/inventory/identification_system.rs +++ b/src/inventory/identification_system.rs @@ -9,7 +9,7 @@ use crate::{ Player, }; use specs::prelude::*; -use crate::data::events::*; +use crate::consts::events::*; use crate::gamelog; pub struct ItemIdentificationSystem {} diff --git a/src/inventory/remove_system.rs b/src/inventory/remove_system.rs index 0a46bce..62561b9 100644 --- a/src/inventory/remove_system.rs +++ b/src/inventory/remove_system.rs @@ -13,7 +13,7 @@ use crate::{ }; use bracket_lib::prelude::*; use specs::prelude::*; -use crate::data::messages; +use crate::consts::messages; pub struct ItemRemoveSystem {} diff --git a/src/lib.rs b/src/lib.rs index 812c7be..5481482 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -26,7 +26,7 @@ pub mod trigger_system; pub mod inventory; pub mod particle_system; pub mod ai; -pub mod data; +pub mod consts; pub mod config; pub mod effects; pub mod gamesystem; diff --git a/src/main.rs b/src/main.rs index a141ff0..72f506d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,10 +6,7 @@ use specs::prelude::*; use specs::saveload::{ SimpleMarker, SimpleMarkerAllocator }; use bracket_lib::prelude::*; use std::collections::HashMap; - -const TILESIZE: f32 = 16.0; -const DISPLAYWIDTH: u32 = 100; -const DISPLAYHEIGHT: u32 = 56; +use crate::consts::{ DISPLAYHEIGHT, DISPLAYWIDTH, TILESIZE }; #[notan_main] fn main() -> Result<(), String> { @@ -144,7 +141,7 @@ fn setup(gfx: &mut Graphics) -> State { gs.ecs.insert(rex_assets::RexAssets::new()); gamelog::setup_log(); - gamelog::record_event(data::events::EVENT::Level(1)); + gamelog::record_event(consts::events::EVENT::Level(1)); gs.generate_world_map(1, TileType::Floor); gs @@ -379,7 +376,7 @@ fn draw_spritebox(panel: BoxDraw, draw: &mut Draw, atlas: &HashMap) { let offset = crate::camera::get_offset(); let log = BoxDraw { @@ -451,6 +448,9 @@ fn draw(app: &mut App, gfx: &mut Graphics, gs: &mut State) { draw_farlook(x, y, &mut draw, &gs.atlas); //draw_tooltips(&gs.ecs, ctx, Some((x, y))); TODO: Put this in draw loop } + RunState::ShowCheatMenu => { + crate::gui::draw_cheat_menu(&mut draw, &gs.atlas, &gs.font); + } _ => {} } // Render batch diff --git a/src/map/dungeon.rs b/src/map/dungeon.rs index ed0bf91..d5331a2 100644 --- a/src/map/dungeon.rs +++ b/src/map/dungeon.rs @@ -4,7 +4,7 @@ use bracket_lib::prelude::*; use serde::{ Deserialize, Serialize }; use specs::prelude::*; use std::collections::{ HashMap, HashSet }; -use crate::data::events::*; +use crate::consts::events::*; #[derive(Default, Serialize, Deserialize, Clone)] pub struct MasterDungeonMap { diff --git a/src/map/interval_spawning_system.rs b/src/map/interval_spawning_system.rs index b03918a..acdaad2 100644 --- a/src/map/interval_spawning_system.rs +++ b/src/map/interval_spawning_system.rs @@ -10,7 +10,7 @@ use crate::{ }; use specs::prelude::*; use bracket_lib::prelude::*; -use crate::data::events::*; +use crate::consts::events::*; const TRY_SPAWN_CHANCE: i32 = 70; const FEATURE_MESSAGE_CHANCE: i32 = 110; diff --git a/src/map/mod.rs b/src/map/mod.rs index 9bcacca..a9582e8 100644 --- a/src/map/mod.rs +++ b/src/map/mod.rs @@ -16,7 +16,7 @@ pub use interval_spawning_system::{ maybe_map_message, try_spawn_interval }; pub mod dungeon; pub use dungeon::{ level_transition, MasterDungeonMap }; pub mod themes; -use super::data::visuals::{ +use super::consts::visuals::{ BRIGHTEN_FG_COLOUR_BY, GLOBAL_OFFSET_MIN_CLAMP, GLOBAL_OFFSET_MAX_CLAMP, diff --git a/src/map/themes.rs b/src/map/themes.rs index e11ee2b..4304901 100644 --- a/src/map/themes.rs +++ b/src/map/themes.rs @@ -1,7 +1,7 @@ use super::{ Map, Point, TileType }; -use crate::data::visuals::*; +use crate::consts::visuals::*; use crate::config::CONFIG; -use crate::data::ids::*; +use crate::consts::ids::*; use bracket_lib::prelude::*; use std::ops::{ Add, Mul }; use notan::prelude::*; @@ -361,7 +361,7 @@ fn darken_by_distance(pos: Point, other_pos: Point) -> f32 { let distance = DistanceAlg::Pythagoras.distance2d(pos, other_pos) as f32; // Get distance in tiles. let interp_factor = (distance - START_DARKEN_AT_N_TILES) / - ((crate::data::entity::DEFAULT_VIEWSHED_STANDARD as f32) - START_DARKEN_AT_N_TILES); + ((crate::consts::entity::DEFAULT_VIEWSHED_STANDARD as f32) - START_DARKEN_AT_N_TILES); let interp_factor = interp_factor.max(0.0).min(1.0); // Clamp [0-1] let result = 1.0 - diff --git a/src/map/tiletype.rs b/src/map/tiletype.rs index e07d324..92e659f 100644 --- a/src/map/tiletype.rs +++ b/src/map/tiletype.rs @@ -1,5 +1,5 @@ use serde::{ Deserialize, Serialize }; -use crate::data::sprites::*; +use crate::consts::sprites::*; #[derive(PartialEq, Eq, Hash, Copy, Clone, Serialize, Deserialize, Debug)] pub enum TileType { diff --git a/src/map_builders/forest.rs b/src/map_builders/forest.rs index e30f270..fac9cde 100644 --- a/src/map_builders/forest.rs +++ b/src/map_builders/forest.rs @@ -12,7 +12,7 @@ use super::{ Foliage, }; use bracket_lib::prelude::*; -use crate::data::names::*; +use crate::consts::names::*; pub fn forest_builder( new_id: i32, diff --git a/src/map_builders/mod.rs b/src/map_builders/mod.rs index 7b38efe..407dfdd 100644 --- a/src/map_builders/mod.rs +++ b/src/map_builders/mod.rs @@ -38,8 +38,8 @@ use common::*; use specs::prelude::*; use voronoi_spawning::VoronoiSpawning; use super::config::CONFIG; -use super::data::ids::*; -use super::data::names::*; +use super::consts::ids::*; +use super::consts::names::*; //use wfc::WaveFunctionCollapseBuilder; mod room_exploder; use room_exploder::RoomExploder; diff --git a/src/map_builders/prefab_builder/mod.rs b/src/map_builders/prefab_builder/mod.rs index 582577d..c6b0e35 100644 --- a/src/map_builders/prefab_builder/mod.rs +++ b/src/map_builders/prefab_builder/mod.rs @@ -4,7 +4,7 @@ pub mod prefab_levels; pub mod prefab_sections; pub mod prefab_vaults; use std::collections::HashSet; -use crate::data::ids::*; +use crate::consts::ids::*; #[derive(PartialEq, Copy, Clone)] #[allow(dead_code)] diff --git a/src/map_builders/room_themer.rs b/src/map_builders/room_themer.rs index 2cc4ca1..1f6b5a9 100644 --- a/src/map_builders/room_themer.rs +++ b/src/map_builders/room_themer.rs @@ -1,6 +1,6 @@ use super::{ BuilderMap, MetaMapBuilder, Rect, TileType }; use crate::tile_walkable; -use crate::data::messages::{ +use crate::consts::messages::{ FEATURE_TREANTS, FEATURE_BARRACKS_GOBLIN, FEATURE_BARRACKS_KOBOLD, diff --git a/src/map_builders/town.rs b/src/map_builders/town.rs index c9cf3f9..ba18395 100644 --- a/src/map_builders/town.rs +++ b/src/map_builders/town.rs @@ -1,6 +1,6 @@ use super::{ BuilderChain, BuilderMap, InitialMapBuilder, Position, TileType, FillEdges }; use std::collections::HashSet; -use crate::data::names::*; +use crate::consts::names::*; use bracket_lib::prelude::*; pub fn town_builder( diff --git a/src/morgue.rs b/src/morgue.rs index b0160d9..5b49714 100644 --- a/src/morgue.rs +++ b/src/morgue.rs @@ -9,7 +9,7 @@ use specs::prelude::*; use bracket_lib::prelude::*; use to_char; use std::collections::HashMap; -use crate::data::events::*; +use crate::consts::events::*; #[cfg(target_arch = "wasm32")] pub fn create_morgue_file(ecs: &World) { diff --git a/src/particle_system.rs b/src/particle_system.rs index b576984..894897e 100644 --- a/src/particle_system.rs +++ b/src/particle_system.rs @@ -1,7 +1,7 @@ use super::{ ParticleLifetime, Position, Renderable, BTerm }; use bracket_lib::prelude::*; use specs::prelude::*; -use crate::data::visuals::{ DEFAULT_PARTICLE_LIFETIME, SHORT_PARTICLE_LIFETIME }; +use crate::consts::visuals::{ DEFAULT_PARTICLE_LIFETIME, SHORT_PARTICLE_LIFETIME }; /// Runs each tick, deleting particles who are past their expiry. // Should make an addition to this to also spawn delayed particles, diff --git a/src/player.rs b/src/player.rs index 337ccd3..0b5b519 100644 --- a/src/player.rs +++ b/src/player.rs @@ -37,8 +37,8 @@ use super::{ use bracket_lib::prelude::*; use specs::prelude::*; use std::cmp::{ max, min }; -use crate::data::events::*; -use crate::data::ids::*; +use crate::consts::events::*; +use crate::consts::ids::*; use crate::gui::with_article; use notan::prelude::*; use std::collections::HashMap; diff --git a/src/raws/rawmaster.rs b/src/raws/rawmaster.rs index d15b7c7..6251291 100644 --- a/src/raws/rawmaster.rs +++ b/src/raws/rawmaster.rs @@ -4,8 +4,8 @@ use crate::gamesystem::*; use crate::gui::Ancestry; use crate::random_table::RandomTable; use crate::config::CONFIG; -use crate::data::visuals::BLOODSTAIN_COLOUR; -use crate::data::entity::DEFAULT_VIEWSHED_STANDARD; +use crate::consts::visuals::BLOODSTAIN_COLOUR; +use crate::consts::entity::DEFAULT_VIEWSHED_STANDARD; use bracket_lib::prelude::*; use specs::prelude::*; use specs::saveload::{ MarkedBuilder, SimpleMarker }; diff --git a/src/spawner.rs b/src/spawner.rs index 21a68b1..891a563 100644 --- a/src/spawner.rs +++ b/src/spawner.rs @@ -28,8 +28,8 @@ use super::{ HasDamageModifiers, Intrinsics, }; -use crate::data::entity; -use crate::data::visuals::BLOODSTAIN_COLOUR; +use crate::consts::entity; +use crate::consts::visuals::BLOODSTAIN_COLOUR; use crate::gamesystem::*; use bracket_lib::prelude::*; use specs::prelude::*; diff --git a/src/states/state.rs b/src/states/state.rs index 3510e0a..35778ad 100644 --- a/src/states/state.rs +++ b/src/states/state.rs @@ -13,8 +13,8 @@ use crate::visibility_system::VisibilitySystem; use crate::ai; use crate::gamelog; use crate::spawner; -use crate::data::ids::*; -use crate::data::events::*; +use crate::consts::ids::*; +use crate::consts::events::*; use crate::components::*; use crate::player::*; use crate::gui; @@ -230,7 +230,49 @@ impl State { } } } - // RunState::ShowCheatMenu + RunState::ShowCheatMenu => { + let result = gui::show_cheat_menu(self, ctx); + match result { + gui::CheatMenuResult::Cancel => { + new_runstate = RunState::AwaitingInput; + } + gui::CheatMenuResult::NoResponse => {} + gui::CheatMenuResult::Ascend => { + let id = self.ecs.fetch::().id - 1; + self.goto_id(id, TileType::DownStair); + self.mapgen_next_state = Some(RunState::PreRun); + new_runstate = RunState::MapGeneration; + } + gui::CheatMenuResult::Descend => { + let id = self.ecs.fetch::().id + 1; + self.goto_id(id, TileType::UpStair); + self.mapgen_next_state = Some(RunState::PreRun); + new_runstate = RunState::MapGeneration; + } + gui::CheatMenuResult::Heal => { + let player = self.ecs.fetch::(); + let mut pools = self.ecs.write_storage::(); + let mut player_pools = pools.get_mut(*player).unwrap(); + player_pools.hit_points.current = player_pools.hit_points.max; + new_runstate = RunState::AwaitingInput; + } + gui::CheatMenuResult::MagicMap => { + let mut map = self.ecs.fetch_mut::(); + for v in map.revealed_tiles.iter_mut() { + *v = true; + } + new_runstate = RunState::AwaitingInput; + } + gui::CheatMenuResult::GodMode => { + let player = self.ecs.fetch::(); + let mut pools = self.ecs.write_storage::(); + let mut player_pools = pools.get_mut(*player).unwrap(); + gamelog::Logger::new().append("TOGGLED GOD MODE!").log(); + player_pools.god = !player_pools.god; + new_runstate = RunState::AwaitingInput; + } + } + } // RunState::ShowInventory // RunState::ShowDropItem // RunState::ShowRemoveItem @@ -248,7 +290,7 @@ impl State { } //RunState::GameOver RunState::GoToLevel(id, dest_tile) => { - self.goto_id(id, dest_tile); // TODO: This causes issues being before swapping runstate? + self.goto_id(id, dest_tile); self.mapgen_next_state = Some(RunState::PreRun); new_runstate = RunState::MapGeneration; } @@ -414,7 +456,7 @@ impl State { } } RunState::ShowCheatMenu => { - let result = gui::show_cheat_menu(self, ctx); + let result = gui::CheatMenuResult::Cancel; //gui::show_cheat_menu(self, ctx); match result { gui::CheatMenuResult::Cancel => { new_runstate = RunState::AwaitingInput; diff --git a/tests/gamelog_test.rs b/tests/gamelog_test.rs index 0e18d44..772dc66 100644 --- a/tests/gamelog_test.rs +++ b/tests/gamelog_test.rs @@ -1,6 +1,6 @@ // tests/gamelog_test.rs use rust_rl::gamelog::*; -use rust_rl::data::events::*; +use rust_rl::consts::events::*; use lazy_static::lazy_static; use std::sync::Mutex;