rust/lib-hedgewars-engine/src/world.rs
changeset 15809 c3971b38bbfa
parent 15764 b10bbfb2b354
child 15828 44b49f255e31
equal deleted inserted replaced
15808:1fa2f38c5700 15809:c3971b38bbfa
    25     }
    25     }
    26 }
    26 }
    27 
    27 
    28 pub struct World {
    28 pub struct World {
    29     random_numbers_gen: LaggedFibonacciPRNG,
    29     random_numbers_gen: LaggedFibonacciPRNG,
       
    30     feature_size: u8,
    30     preview: Option<Land2D<u8>>,
    31     preview: Option<Land2D<u8>>,
    31     game_state: Option<GameState>,
    32     game_state: Option<GameState>,
    32     map_renderer: Option<MapRenderer>,
    33     map_renderer: Option<MapRenderer>,
    33     gear_renderer: Option<GearRenderer>,
    34     gear_renderer: Option<GearRenderer>,
    34     camera: Camera,
    35     camera: Camera,
    37 
    38 
    38 impl World {
    39 impl World {
    39     pub fn new() -> Self {
    40     pub fn new() -> Self {
    40         Self {
    41         Self {
    41             random_numbers_gen: LaggedFibonacciPRNG::new(&[]),
    42             random_numbers_gen: LaggedFibonacciPRNG::new(&[]),
       
    43             feature_size: 5,
    42             preview: None,
    44             preview: None,
    43             game_state: None,
    45             game_state: None,
    44             map_renderer: None,
    46             map_renderer: None,
    45             gear_renderer: None,
    47             gear_renderer: None,
    46             camera: Camera::new(),
    48             camera: Camera::new(),
    71 
    73 
    72     pub fn set_seed(&mut self, seed: &[u8]) {
    74     pub fn set_seed(&mut self, seed: &[u8]) {
    73         self.random_numbers_gen = LaggedFibonacciPRNG::new(seed);
    75         self.random_numbers_gen = LaggedFibonacciPRNG::new(seed);
    74     }
    76     }
    75 
    77 
       
    78     pub fn set_feature_size(&mut self, feature_size: u8) {
       
    79         self.feature_size = feature_size;
       
    80     }
       
    81 
    76     pub fn preview(&self) -> &Option<Land2D<u8>> {
    82     pub fn preview(&self) -> &Option<Land2D<u8>> {
    77         &self.preview
    83         &self.preview
    78     }
    84     }
    79 
    85 
    80     pub fn generate_preview(&mut self) {
    86     pub fn generate_preview(&mut self) {
    89             template.fill_points = vec![Point::new(1, 0)];
    95             template.fill_points = vec![Point::new(1, 0)];
    90 
    96 
    91             template
    97             template
    92         }
    98         }
    93 
    99 
    94         let params = LandGenerationParameters::new(0u8, u8::max_value(), 5, false, false);
   100         // based on old engine min_distance... dunno if this is the correct place tho
       
   101         let distance_divisor = (self.feature_size as u32).pow(2) / 8 + 10;
       
   102 
       
   103         let params = LandGenerationParameters::new(0u8, u8::max_value(), distance_divisor, false, false);
    95         let landgen = TemplatedLandGenerator::new(template());
   104         let landgen = TemplatedLandGenerator::new(template());
    96         self.preview = Some(landgen.generate_land(&params, &mut self.random_numbers_gen));
   105         self.preview = Some(landgen.generate_land(&params, &mut self.random_numbers_gen));
    97     }
   106     }
    98 
   107 
    99     pub fn dispose_preview(&mut self) {
   108     pub fn dispose_preview(&mut self) {