Browse Source

Chapter 24 makes much more sense now.

Herbert Wolverson 4 years ago
parent
commit
91e49d8602

BIN
book/src/c24-s1.gif


BIN
book/src/c24-s1.jpg


File diff suppressed because it is too large
+ 107 - 130
book/src/chapter_24.md


+ 2 - 5
chapter-24-map-testing/src/main.rs

@@ -133,14 +133,11 @@ impl GameState for State {
                 if !SHOW_MAPGEN_VISUALIZER {
                     newrunstate = self.mapgen_next_state.unwrap();
                 }
-                ctx.cls();
-                for v in self.mapgen_history[self.mapgen_index].revealed_tiles.iter_mut() {
-                    *v = true;
-                }
+                ctx.cls();                
                 draw_map(&self.mapgen_history[self.mapgen_index], ctx);
 
                 self.mapgen_timer += ctx.frame_time_ms;
-                if self.mapgen_timer > 500.0 {
+                if self.mapgen_timer > 300.0 {
                     self.mapgen_timer = 0.0;
                     self.mapgen_index += 1;
                     if self.mapgen_index == self.mapgen_history.len() {

+ 0 - 1
chapter-24-map-testing/src/map.rs

@@ -1,6 +1,5 @@
 extern crate rltk;
 use rltk::{ RGB, Rltk, Console, BaseMap, Algorithm2D, Point };
-use super::{Rect};
 extern crate specs;
 use specs::prelude::*;
 use serde::{Serialize, Deserialize};

+ 2 - 1
chapter-24-map-testing/src/map_builders/mod.rs

@@ -1,4 +1,4 @@
-use super::{Map, Rect, TileType, Position, spawner};
+use super::{Map, Rect, TileType, Position, spawner, SHOW_MAPGEN_VISUALIZER};
 mod simple_map;
 use simple_map::SimpleMapBuilder;
 mod common;
@@ -11,6 +11,7 @@ pub trait MapBuilder {
     fn get_map(&self) -> Map;
     fn get_starting_position(&self) -> Position;
     fn get_snapshot_history(&self) -> Vec<Map>;
+    fn take_snapshot(&mut self);
 }
 
 pub fn random_builder(new_depth: i32) -> Box<dyn MapBuilder> {

+ 13 - 3
chapter-24-map-testing/src/map_builders/simple_map.rs

@@ -1,6 +1,6 @@
 use super::{MapBuilder, Map, Rect, apply_room_to_map, 
     apply_horizontal_tunnel, apply_vertical_tunnel, TileType,
-    Position, spawner};
+    Position, spawner, SHOW_MAPGEN_VISUALIZER};
 use rltk::RandomNumberGenerator;
 use specs::prelude::*;
 
@@ -34,6 +34,16 @@ impl MapBuilder for SimpleMapBuilder {
             spawner::spawn_room(ecs, room, self.depth);
         }
     }
+
+    fn take_snapshot(&mut self) {
+        if SHOW_MAPGEN_VISUALIZER {
+            let mut snapshot = self.map.clone();
+            for v in snapshot.revealed_tiles.iter_mut() {
+                *v = true;
+            }
+            self.history.push(snapshot);
+        }
+    }
 }
 
 impl SimpleMapBuilder {
@@ -66,7 +76,7 @@ impl SimpleMapBuilder {
             }
             if ok {
                 apply_room_to_map(&mut self.map, &new_room);
-                self.history.push(self.map.clone());
+                self.take_snapshot();
 
                 if !self.rooms.is_empty() {
                     let (new_x, new_y) = new_room.center();
@@ -81,7 +91,7 @@ impl SimpleMapBuilder {
                 }
 
                 self.rooms.push(new_room);
-                self.history.push(self.map.clone());
+                self.take_snapshot();
             }
         }