rust/lib-hedgewars-engine/src/world.rs
changeset 15274 42b710b0f883
parent 15263 24828281c9c5
child 15275 66c987015f2d
equal deleted inserted replaced
15273:bfd185ad03e7 15274:42b710b0f883
    26     preview: Option<Land2D<u8>>,
    26     preview: Option<Land2D<u8>>,
    27     game_state: Option<GameState>,
    27     game_state: Option<GameState>,
    28     map_renderer: Option<MapRenderer>,
    28     map_renderer: Option<MapRenderer>,
    29     gear_renderer: Option<GearRenderer>,
    29     gear_renderer: Option<GearRenderer>,
    30     camera: Camera,
    30     camera: Camera,
    31     last_gear_id: GearId,
       
    32 }
    31 }
    33 
    32 
    34 impl World {
    33 impl World {
    35     pub fn new() -> Self {
    34     pub fn new() -> Self {
    36         Self {
    35         Self {
    38             preview: None,
    37             preview: None,
    39             game_state: None,
    38             game_state: None,
    40             map_renderer: None,
    39             map_renderer: None,
    41             gear_renderer: None,
    40             gear_renderer: None,
    42             camera: Camera::new(),
    41             camera: Camera::new(),
    43             last_gear_id: std::num::NonZeroU16::new(1).unwrap(),
       
    44         }
    42         }
    45     }
    43     }
    46 
    44 
    47     pub fn create_renderer(&mut self, width: u16, height: u16) {
    45     pub fn create_renderer(&mut self, width: u16, height: u16) {
    48         let land_tile_size = Size::square(512);
    46         let land_tile_size = Size::square(512);
   126         if let Some(ref mut renderer) = self.gear_renderer {
   124         if let Some(ref mut renderer) = self.gear_renderer {
   127             renderer.render(&self.camera)
   125             renderer.render(&self.camera)
   128         }
   126         }
   129     }
   127     }
   130 
   128 
   131     fn get_unused_gear_id(&mut self) -> GearId {
       
   132         let id = self.last_gear_id;
       
   133         self.last_gear_id = std::num::NonZeroU16::new(self.last_gear_id.get() + 1).unwrap();
       
   134         id
       
   135     }
       
   136 
       
   137     fn create_gear(&mut self, position: Point) {
   129     fn create_gear(&mut self, position: Point) {
   138         let id = self.get_unused_gear_id();
       
   139         if let Some(ref mut state) = self.game_state {
   130         if let Some(ref mut state) = self.game_state {
       
   131             let id = state.physics.new_gear().unwrap();
   140             let fp_position = FPPoint::new(position.x.into(), position.y.into());
   132             let fp_position = FPPoint::new(position.x.into(), position.y.into());
   141             state.physics.add_gear_data(
   133             state.physics.add_gear_data(
   142                 id,
   134                 id,
   143                 hwp::physics::PhysicsData::new(fp_position, FPPoint::zero()),
   135                 hwp::physics::PhysicsData::new(fp_position, FPPoint::zero()),
   144             )
   136             )