equal
deleted
inserted
replaced
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 ) |