Refactor map
This commit is contained in:
39
src/main.rs
39
src/main.rs
@@ -30,7 +30,7 @@ mod healing_system;
|
||||
mod hunger_system;
|
||||
mod inventory_system;
|
||||
mod map;
|
||||
mod map_builders;
|
||||
pub mod map_builders;
|
||||
mod map_indexing_system;
|
||||
mod melee_combat_system;
|
||||
mod monster_ai_system;
|
||||
@@ -84,20 +84,22 @@ impl State {
|
||||
}
|
||||
|
||||
// Build a new map and place the player
|
||||
let mut map_builder = map_builders::new_random_builder(1);
|
||||
let worldmap;
|
||||
let player_start;
|
||||
{
|
||||
let mut worldmap_resource = self.ecs.write_resource::<Map>();
|
||||
*worldmap_resource = map_builders::build_random_map(1);
|
||||
map_builder.build_map();
|
||||
*worldmap_resource = map_builder.get_map();
|
||||
player_start = map_builder.get_starting_position();
|
||||
worldmap = worldmap_resource.clone();
|
||||
}
|
||||
|
||||
// Spawn bad guys
|
||||
for room in worldmap.rooms.iter().skip(1) {
|
||||
spawner::spawn_room(&mut self.ecs, room, 1);
|
||||
}
|
||||
map_builder.spawn_entities(&mut self.ecs);
|
||||
|
||||
// Place the player and update resources
|
||||
let (player_x, player_y) = worldmap.rooms[0].center();
|
||||
let (player_x, player_y) = (player_start.x, player_start.y);
|
||||
let player_entity = spawner::player(&mut self.ecs, player_x, player_y);
|
||||
let mut player_position = self.ecs.write_resource::<Point>();
|
||||
*player_position = Point::new(player_x, player_y);
|
||||
@@ -165,20 +167,23 @@ impl State {
|
||||
.expect("Unable to delete entity")
|
||||
}
|
||||
|
||||
let mut map_builder;
|
||||
let worldmap;
|
||||
let current_depth;
|
||||
let player_start;
|
||||
{
|
||||
let mut worldmap_resource = self.ecs.write_resource::<Map>();
|
||||
current_depth = worldmap_resource.depth;
|
||||
*worldmap_resource = map_builders::build_random_map(current_depth + 1);
|
||||
map_builder = map_builders::new_random_builder(current_depth + 1);
|
||||
map_builder.build_map();
|
||||
*worldmap_resource = map_builder.get_map();
|
||||
player_start = map_builder.get_starting_position();
|
||||
worldmap = worldmap_resource.clone();
|
||||
}
|
||||
|
||||
for room in worldmap.rooms.iter().skip(1) {
|
||||
spawner::spawn_room(&mut self.ecs, room, current_depth + 1);
|
||||
}
|
||||
map_builder.spawn_entities(&mut self.ecs);
|
||||
|
||||
let (player_x, player_y) = worldmap.rooms[0].center();
|
||||
let (player_x, player_y) = (player_start.x, player_start.y);
|
||||
let mut player_position = self.ecs.write_resource::<Point>();
|
||||
*player_position = Point::new(player_x, player_y);
|
||||
let mut position_components = self.ecs.write_storage::<Position>();
|
||||
@@ -513,14 +518,14 @@ fn main() -> rltk::BError {
|
||||
|
||||
gs.ecs.insert(SimpleMarkerAllocator::<SerializeMe>::new());
|
||||
|
||||
let map = map_builders::build_random_map(1);
|
||||
let (player_x, player_y) = map.rooms[0].center();
|
||||
let mut map_builder = map_builders::new_random_builder(1);
|
||||
map_builder.build_map();
|
||||
let player_pos = map_builder.get_starting_position();
|
||||
let mut map = map_builder.get_map();
|
||||
let (player_x, player_y) = (player_pos.x, player_pos.y);
|
||||
|
||||
let player_entity = spawner::player(&mut gs.ecs, player_x, player_y);
|
||||
|
||||
for room in map.rooms.iter().skip(1) {
|
||||
spawner::spawn_room(&mut gs.ecs, room, 1);
|
||||
}
|
||||
map_builder.spawn_entities(&mut gs.ecs);
|
||||
|
||||
gs.ecs.insert(map);
|
||||
gs.ecs.insert(Point::new(player_x, player_y));
|
||||
|
Reference in New Issue
Block a user