rust/lib-hedgewars-engine/src/world.rs
changeset 14166 7d3b94cdc3c4
parent 14154 8354b390f1a2
child 14272 3152d9fdb499
equal deleted inserted replaced
14165:8d9e3af8abce 14166:7d3b94cdc3c4
       
     1 use integral_geometry::{Point, Rect, Size};
       
     2 use land2d::Land2D;
       
     3 use landgen::{
       
     4     outline_template::OutlineTemplate, template_based::TemplatedLandGenerator,
       
     5     LandGenerationParameters, LandGenerator,
       
     6 };
       
     7 use lfprng::LaggedFibonacciPRNG;
       
     8 
       
     9 pub struct World {
       
    10     random_numbers_gen: LaggedFibonacciPRNG,
       
    11     preview: Land2D<u8>,
       
    12 }
       
    13 
       
    14 impl World {
       
    15     pub fn new() -> Self {
       
    16         Self {
       
    17             random_numbers_gen: LaggedFibonacciPRNG::new(&[]),
       
    18             preview: Land2D::new(Size::new(0, 0), 0),
       
    19         }
       
    20     }
       
    21 
       
    22     pub fn preview(&self) -> &Land2D<u8> {
       
    23         &self.preview
       
    24     }
       
    25 
       
    26     pub fn generate_preview(&mut self) {
       
    27         fn template() -> OutlineTemplate {
       
    28             let mut template = OutlineTemplate::new(Size::new(4096, 2048));
       
    29             template.islands = vec![vec![
       
    30                 Rect::from_size_coords(100, 2050, 1, 1),
       
    31                 Rect::from_size_coords(100, 500, 400, 1200),
       
    32                 Rect::from_size_coords(3600, 500, 400, 1200),
       
    33                 Rect::from_size_coords(3900, 2050, 1, 1),
       
    34             ]];
       
    35             template.fill_points = vec![Point::new(1, 0)];
       
    36 
       
    37             template
       
    38         }
       
    39 
       
    40         let params = LandGenerationParameters::new(0 as u8, 255, 5, false, false);
       
    41         let landgen = TemplatedLandGenerator::new(template());
       
    42         self.preview = landgen.generate_land(&params, &mut self.random_numbers_gen);
       
    43     }
       
    44 }