diff options
Diffstat (limited to 'src/bin/generate-lava-map.rs')
-rw-r--r-- | src/bin/generate-lava-map.rs | 42 |
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!("];"); +} |