# HG changeset patch # User sheepluva # Date 1624659208 -7200 # Node ID c3971b38bbfa2f6d0339b2d5456447700edf0ddd # Parent 1fa2f38c5700f68881c2d10825d05bf82b453708 hedgewars-engine (rust)/preview: recognise feature_size cmd and do something with it diff -r 1fa2f38c5700 -r c3971b38bbfa rust/hedgewars-engine-messages/src/parser.rs --- a/rust/hedgewars-engine-messages/src/parser.rs Fri Jun 25 22:34:26 2021 +0200 +++ b/rust/hedgewars-engine-messages/src/parser.rs Sat Jun 26 00:13:28 2021 +0200 @@ -81,6 +81,7 @@ named!(config_message<&[u8], ConfigEngineMessage>, alt!( do_parse!(tag!("C") >> (ConfigRequest)) | do_parse!(tag!("eseed ") >> s: string_tail >> ( SetSeed(s)) ) + | do_parse!(tag!("e$feature_size ") >> s: string_tail >> ( SetFeatureSize(s.parse::().unwrap())) ) )); named!(timestamped_message<&[u8], (SyncedEngineMessage, u16)>, diff -r 1fa2f38c5700 -r c3971b38bbfa rust/lib-hedgewars-engine/src/instance.rs --- a/rust/lib-hedgewars-engine/src/instance.rs Fri Jun 25 22:34:26 2021 +0200 +++ b/rust/lib-hedgewars-engine/src/instance.rs Sat Jun 26 00:13:28 2021 +0200 @@ -55,6 +55,7 @@ fn process_config_message(&mut self, message: &ConfigEngineMessage) { match message { SetSeed(seed) => self.world.set_seed(seed.as_bytes()), + SetFeatureSize(feature_size) => self.world.set_feature_size(*feature_size), _ => unimplemented!(), } } diff -r 1fa2f38c5700 -r c3971b38bbfa rust/lib-hedgewars-engine/src/world.rs --- a/rust/lib-hedgewars-engine/src/world.rs Fri Jun 25 22:34:26 2021 +0200 +++ b/rust/lib-hedgewars-engine/src/world.rs Sat Jun 26 00:13:28 2021 +0200 @@ -27,6 +27,7 @@ pub struct World { random_numbers_gen: LaggedFibonacciPRNG, + feature_size: u8, preview: Option>, game_state: Option, map_renderer: Option, @@ -39,6 +40,7 @@ pub fn new() -> Self { Self { random_numbers_gen: LaggedFibonacciPRNG::new(&[]), + feature_size: 5, preview: None, game_state: None, map_renderer: None, @@ -73,6 +75,10 @@ self.random_numbers_gen = LaggedFibonacciPRNG::new(seed); } + pub fn set_feature_size(&mut self, feature_size: u8) { + self.feature_size = feature_size; + } + pub fn preview(&self) -> &Option> { &self.preview } @@ -91,7 +97,10 @@ template } - let params = LandGenerationParameters::new(0u8, u8::max_value(), 5, false, false); + // based on old engine min_distance... dunno if this is the correct place tho + let distance_divisor = (self.feature_size as u32).pow(2) / 8 + 10; + + let params = LandGenerationParameters::new(0u8, u8::max_value(), distance_divisor, false, false); let landgen = TemplatedLandGenerator::new(template()); self.preview = Some(landgen.generate_land(¶ms, &mut self.random_numbers_gen)); }