data to consts, cheatmenu

This commit is contained in:
Llywelwyn 2023-09-24 23:46:27 +01:00
parent a2fb893f49
commit 0d4c0c9558
47 changed files with 178 additions and 87 deletions

View file

@ -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

View file

@ -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 {}

View file

@ -12,7 +12,7 @@ use crate::{
Intrinsics,
};
use specs::prelude::*;
use crate::data::events::*;
use crate::consts::events::*;
pub struct RegenSystem {}

View file

@ -12,7 +12,7 @@ use crate::{
};
use bracket_lib::prelude::*;
use specs::prelude::*;
use crate::data::events::*;
use crate::consts::events::*;
pub struct TurnStatusSystem {}

View file

@ -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.
}

View file

@ -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;

View file

@ -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<Entity> = Vec::new();

View file

@ -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::*;

View file

@ -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<Entity>, item: Entity, target: &Targets, ecs: &mut World) {

View file

@ -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"

View file

@ -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;

View file

@ -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 {

View file

@ -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<String, Texture>,
font: &notan::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");*/
}

View file

@ -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::*;

View file

@ -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::*;

View file

@ -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 {}

View file

@ -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 {}

View file

@ -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 {}

View file

@ -9,7 +9,7 @@ use crate::{
Player,
};
use specs::prelude::*;
use crate::data::events::*;
use crate::consts::events::*;
use crate::gamelog;
pub struct ItemIdentificationSystem {}

View file

@ -13,7 +13,7 @@ use crate::{
};
use bracket_lib::prelude::*;
use specs::prelude::*;
use crate::data::messages;
use crate::consts::messages;
pub struct ItemRemoveSystem {}

View file

@ -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;

View file

@ -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<String, Textu
);
}
use crate::data::visuals::{ VIEWPORT_H, VIEWPORT_W };
use crate::consts::visuals::{ VIEWPORT_H, VIEWPORT_W };
fn draw_bg(ecs: &World, draw: &mut Draw, atlas: &HashMap<String, Texture>) {
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

View file

@ -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 {

View file

@ -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;

View file

@ -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,

View file

@ -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 -

View file

@ -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 {

View file

@ -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,

View file

@ -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;

View file

@ -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)]

View file

@ -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,

View file

@ -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(

View file

@ -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) {

View file

@ -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,

View file

@ -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;

View file

@ -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 };

View file

@ -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::*;

View file

@ -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::<Map>().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::<Map>().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::<Entity>();
let mut pools = self.ecs.write_storage::<Pools>();
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::<Map>();
for v in map.revealed_tiles.iter_mut() {
*v = true;
}
new_runstate = RunState::AwaitingInput;
}
gui::CheatMenuResult::GodMode => {
let player = self.ecs.fetch::<Entity>();
let mut pools = self.ecs.write_storage::<Pools>();
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;

View file

@ -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;