significant events in morgue file, better event logging

This commit is contained in:
Llywelwyn 2023-08-25 22:43:50 +01:00
parent de5dacb2ba
commit 738484436b
38 changed files with 246 additions and 102 deletions

View file

@ -4,6 +4,7 @@ use rltk::prelude::*;
use serde::{ Deserialize, Serialize };
use specs::prelude::*;
use std::collections::{ HashMap, HashSet };
use crate::data::events::*;
#[derive(Default, Serialize, Deserialize, Clone)]
pub struct MasterDungeonMap {
@ -241,7 +242,7 @@ fn transition_to_new_map(ecs: &mut World, new_id: i32) -> Vec<Map> {
// Might need this to fallback to 1, but if player
// level isn't found at all, there's a bigger concern
// concern than just this function not working.
let player_level = gamelog::get_event_count("player_level");
let player_level = gamelog::get_event_count(EVENT::COUNT_LEVEL);
let mut builder = map_builders::level_builder(new_id, &mut rng, 100, 50, player_level);
builder.build_map(&mut rng);
std::mem::drop(rng);

View file

@ -1,5 +1,6 @@
use crate::{ config::CONFIG, gamelog, raws, spawner, Clock, Map, RandomNumberGenerator, TakingTurn };
use specs::prelude::*;
use crate::data::events::*;
const TRY_SPAWN_CHANCE: i32 = 70;
@ -32,7 +33,7 @@ pub fn try_spawn_interval(ecs: &mut World) {
fn spawn_random_mob_in_free_nonvisible_tile(ecs: &mut World) {
let map = ecs.fetch::<Map>();
let mut available_tiles = populate_unblocked_nonvisible(&map);
let player_level = gamelog::get_event_count("player_level");
let player_level = gamelog::get_event_count(EVENT::COUNT_LEVEL);
rltk::console::log(player_level);
let difficulty = (map.difficulty + player_level) / 2;
if available_tiles.len() == 0 {

View file

@ -8,7 +8,7 @@ pub use interval_spawning_system::try_spawn_interval;
pub mod dungeon;
pub use dungeon::{ level_transition, MasterDungeonMap };
pub mod themes;
use crate::config::visuals::MAX_COLOUR_OFFSET_PERCENT;
use crate::data::visuals::MAX_COLOUR_OFFSET_PERCENT;
// FIXME: If the map size gets too small, entities stop being rendered starting from the right.
// i.e. on a map size of 40*40, only entities to the left of the player are rendered.

View file

@ -1,6 +1,5 @@
use super::{ Map, Point, TileType };
use crate::config::glyphs::*;
use crate::config::visuals::*;
use crate::data::visuals::*;
use crate::config::CONFIG;
use rltk::prelude::*;
use std::ops::{ Add, Mul };
@ -269,7 +268,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::config::entity::DEFAULT_VIEWSHED_STANDARD as f32) - START_DARKEN_AT_N_TILES);
((crate::data::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]
return (
1.0 -