From 7eb0e0ad64b353943b9b5f117121b23185ea4604 Mon Sep 17 00:00:00 2001 From: Llywelwyn Date: Mon, 10 Jul 2023 11:13:54 +0100 Subject: [PATCH] minor fixes - grammar and rng --- src/damage_system.rs | 2 +- src/main.rs | 15 +++++++++++---- src/map.rs | 4 +--- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/damage_system.rs b/src/damage_system.rs index f4daccb..b46333f 100644 --- a/src/damage_system.rs +++ b/src/damage_system.rs @@ -49,7 +49,7 @@ pub fn delete_the_dead(ecs: &mut World) { if let Some(_item) = item { log.entries.push(format!("{} was destroyed!", &victim_name.name)); } else { - log.entries.push(format!("{} died!", &victim_name.name)); + log.entries.push(format!("The {} died!", &victim_name.name)); } } dead.push(entity) diff --git a/src/main.rs b/src/main.rs index 73e3acd..8148dcb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -use rltk::{GameState, Point, Rltk, RGB}; +use rltk::{GameState, Point, RandomNumberGenerator, Rltk, RGB}; use specs::prelude::*; use specs::saveload::{SimpleMarker, SimpleMarkerAllocator}; use std::ops::Add; @@ -125,7 +125,8 @@ impl State { { let mut worldmap_resource = self.ecs.write_resource::(); current_depth = worldmap_resource.depth; - *worldmap_resource = Map::new_map_rooms_and_corridors(current_depth + 1); + let mut rng = self.ecs.write_resource::(); + *worldmap_resource = Map::new_map_rooms_and_corridors(&mut rng, current_depth + 1); worldmap = worldmap_resource.clone(); } @@ -378,6 +379,7 @@ fn main() -> rltk::BError { .build()?; context.with_post_scanlines(false); //context.screen_burn_color(RGB::named((150, 255, 255))); + let mut gs = State { ecs: World::new() }; gs.ecs.register::(); @@ -409,12 +411,17 @@ fn main() -> rltk::BError { gs.ecs.register::(); gs.ecs.insert(SimpleMarkerAllocator::::new()); - let map = Map::new_map_rooms_and_corridors(1); + // Create RNG. + let mut rng = rltk::RandomNumberGenerator::new(); + // Use seed to generate the map. + let map = Map::new_map_rooms_and_corridors(&mut rng, 1); + // Insert seed into the ECS. + gs.ecs.insert(rng); + let (player_x, player_y) = map.rooms[0].centre(); let player_name = "wanderer".to_string(); let player_entity = spawner::player(&mut gs.ecs, player_x, player_y, player_name); - gs.ecs.insert(rltk::RandomNumberGenerator::new()); for room in map.rooms.iter().skip(1) { spawner::spawn_room(&mut gs.ecs, room, 1); } diff --git a/src/map.rs b/src/map.rs index d9f5b19..6bedfa3 100644 --- a/src/map.rs +++ b/src/map.rs @@ -92,7 +92,7 @@ impl Map { } /// Makes a procgen map out of rooms and corridors, and returns the rooms and the map. - pub fn new_map_rooms_and_corridors(new_depth: i32) -> Map { + pub fn new_map_rooms_and_corridors(rng: &mut RandomNumberGenerator, new_depth: i32) -> Map { let mut map = Map { tiles: vec![TileType::Wall; MAPCOUNT], rooms: Vec::new(), @@ -113,8 +113,6 @@ impl Map { const MIN_SIZE: i32 = 6; const MAX_SIZE: i32 = 10; - let mut rng = RandomNumberGenerator::new(); - for idx in 0..map.red_offset.len() { let roll = rng.roll_dice(1, MAX_OFFSET as i32); map.red_offset[idx] = roll as u8;