summaryrefslogtreecommitdiff
path: root/src/bin/generate-lava-map.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/generate-lava-map.rs')
-rw-r--r--src/bin/generate-lava-map.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/bin/generate-lava-map.rs b/src/bin/generate-lava-map.rs
new file mode 100644
index 0000000..f960416
--- /dev/null
+++ b/src/bin/generate-lava-map.rs
@@ -0,0 +1,42 @@
+use steam_powered_wyrm::constants::*;
+use steam_powered_wyrm::game::map::Map;
+use steam_powered_wyrm::geometry::*;
+
+fn main() {
+ let mut lava_map = [Map::default(); MAX_ROUNDS as usize + 1];
+ let center = Point2d::new(MAP_SIZE as i8 / 2, MAP_SIZE as i8 / 2);
+ let center_f64 = Point2d::new(center.x as f64, center.y as f64);
+
+ for (round, ref mut map) in lava_map.iter_mut().enumerate() {
+ let lava_progress = ((round as f64 - LAVA_ROUND_START as f64)
+ / (LAVA_ROUND_END - LAVA_ROUND_START) as f64)
+ .min(1.)
+ .max(0.);
+ let safe_radius = (MAP_SIZE / 2) as f64 * (1. - lava_progress) + 1.;
+ let safe_radius_squared = safe_radius * safe_radius;
+
+ for (y, row) in MAP_ROW_SIZE.iter().enumerate() {
+ for x in row.x_offset..MAP_SIZE - row.x_offset {
+ let p_f64 = Point2d::new(x as f64, y as f64);
+ let p = Point2d::new(x as i8, y as i8);
+
+ let is_lava = (p_f64 - center_f64).magnitude_squared() > safe_radius_squared;
+ if is_lava {
+ map.set(p);
+ } else {
+ map.clear(p);
+ }
+ }
+ }
+ }
+
+ println!("pub const LAVA_MAP: [[u64; MAP_U64S]; MAX_ROUNDS as usize + 1] = [");
+ for round in lava_map.iter() {
+ print!("[");
+ for num in round.cells.iter() {
+ print!("{:#X}, ", num);
+ }
+ println!("],");
+ }
+ println!("];");
+}