rust/lib-hedgewars-engine/src/world.rs
changeset 15195 e2adb40c7988
parent 14723 5915a199cb81
child 15268 24828281c9c5
--- a/rust/lib-hedgewars-engine/src/world.rs	Fri Jun 21 20:27:37 2019 +0200
+++ b/rust/lib-hedgewars-engine/src/world.rs	Sat Jun 22 00:18:24 2019 +0300
@@ -8,7 +8,7 @@
 };
 use lfprng::LaggedFibonacciPRNG;
 
-use crate::render::{camera::Camera, MapRenderer};
+use crate::render::{camera::Camera, GearRenderer, MapRenderer};
 
 struct GameState {
     land: Land2D<u32>,
@@ -25,7 +25,8 @@
     random_numbers_gen: LaggedFibonacciPRNG,
     preview: Option<Land2D<u8>>,
     game_state: Option<GameState>,
-    renderer: Option<MapRenderer>,
+    map_renderer: Option<MapRenderer>,
+    gear_renderer: Option<GearRenderer>,
     camera: Camera,
     last_gear_id: GearId,
 }
@@ -36,7 +37,8 @@
             random_numbers_gen: LaggedFibonacciPRNG::new(&[]),
             preview: None,
             game_state: None,
-            renderer: None,
+            map_renderer: None,
+            gear_renderer: None,
             camera: Camera::new(),
             last_gear_id: GearId::default(),
         }
@@ -44,7 +46,8 @@
 
     pub fn create_renderer(&mut self, width: u16, height: u16) {
         let land_tile_size = Size::square(512);
-        self.renderer = Some(MapRenderer::new(land_tile_size));
+        self.map_renderer = Some(MapRenderer::new(land_tile_size));
+        self.gear_renderer = Some(GearRenderer::new());
         self.camera = Camera::with_size(Size::new(width as usize, height as usize));
 
         use mapgen::{theme::Theme, MapGenerator};
@@ -56,7 +59,7 @@
             let theme =
                 Theme::load(Path::new("../../share/hedgewars/Data/Themes/Cheese/")).unwrap();
             let texture = MapGenerator::new().make_texture(&state.land, &theme);
-            if let Some(ref mut renderer) = self.renderer {
+            if let Some(ref mut renderer) = self.map_renderer {
                 renderer.init(&texture);
             }
         }
@@ -112,7 +115,7 @@
     }
 
     pub fn render(&mut self) {
-        if let Some(ref mut renderer) = self.renderer {
+        if let Some(ref mut renderer) = self.map_renderer {
             unsafe {
                 gl::ClearColor(0.4f32, 0f32, 0.2f32, 1f32);
                 gl::Clear(gl::COLOR_BUFFER_BIT);
@@ -120,6 +123,9 @@
 
             renderer.render(&self.camera);
         }
+        if let Some(ref mut renderer) = self.gear_renderer {
+            renderer.render(&self.camera)
+        }
     }
 
     fn get_unused_gear_id(&mut self) -> GearId {