summaryrefslogtreecommitdiffstats
path: root/src/window.rs
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-05-04 11:03:27 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-05-04 11:03:27 -0400
commitb35d6cf47ed154697fb45e10586206295148eb35 (patch)
treeb28f7de2152eff94f7e2d2f156f1390daff19106 /src/window.rs
parentdd5de0107163bc3ea3898c07089d00f82feeec5e (diff)
downloadsystemic4x-b35d6cf47ed154697fb45e10586206295148eb35.tar.gz
systemic4x-b35d6cf47ed154697fb45e10586206295148eb35.tar.bz2
systemic4x-b35d6cf47ed154697fb45e10586206295148eb35.zip
add label rendering for planetary bodies
Diffstat (limited to 'src/window.rs')
-rw-r--r--src/window.rs49
1 files changed, 27 insertions, 22 deletions
diff --git a/src/window.rs b/src/window.rs
index c64d653..73034ef 100644
--- a/src/window.rs
+++ b/src/window.rs
@@ -38,10 +38,7 @@ impl GameWindow
let wgpuctx = pollster::block_on(WgpuCtx::new(instance, window.clone()));
let eguictx = EguiCtx::new(&window, &wgpuctx);
- let tacmap = TacticalMap::new(
- &wgpuctx,
- winit::dpi::LogicalPosition::new(0.0, 0.0),
- winit::dpi::LogicalSize::new(1.0, 1.0));
+ let tacmap = TacticalMap::new(&wgpuctx);
let ui_state = ui::State{
topbar_sate: ui::topbar::TopBarState {
@@ -100,7 +97,16 @@ impl GameWindow
if !self.wgpuctx.is_ready() {
return Ok(());
}
+
+ let view = self.wgpuctx.prepare_surface(&wgpu::TextureViewDescriptor::default())?;
+ let mut scene = SceneCtx::from_view_default(&self.wgpuctx, &view, Some("Systemic window scene"));
+ self.eguictx.prepare(&self.window);
+ let screen_size = egui::vec2(
+ self.wgpuctx.surface_config().width as f32,
+ self.wgpuctx.surface_config().height as f32);
+
+ self.ui_state.render(game_state, &self.eguictx);
if self.ui_state.topbar_sate.current_system.is_some() {
let game_state = game_state.borrow();
let current_system = &game_state.solar_systems()[self.ui_state.topbar_sate.current_system.unwrap()];
@@ -109,28 +115,27 @@ impl GameWindow
&self.wgpuctx,
current_system,
game_state.timeman())?;
- }
-
- let view = self.wgpuctx.prepare_surface(&wgpu::TextureViewDescriptor::default())?;
- let mut scene = SceneCtx::from_view_default(&self.wgpuctx, &view, Some("Systemic window scene"));
- {
+
+ self.tactical_map.prepare(&mut scene);
+
let mut pass = RenderPassBuilder::new(Some("Systemic window render pass"), &view)
- .clear_color(wgpu::Color { r: 0.0, g: 0.0, b: 0.0, a: 1.0 })
+ .clear_color(wgpu::Color { r: 0.0, g: 0.0, b: 0.1, a: 1.0 })
.build_from_scene(&mut scene);
//Draw the tactical map canvas.
- self.tactical_map.present(&mut pass)?;
- }
- {
- self.eguictx.prepare(&self.window);
- self.ui_state.render(game_state, &self.eguictx);
-
- self.eguictx.present(
- &self.window,
- &self.wgpuctx,
- scene.encoder_mut(),
- &view);
+ self.tactical_map.paint(&mut pass);
+
+ egui::CentralPanel::default()
+ .frame(egui::Frame::new())
+ .show(self.eguictx.context(), |ui| {
+ self.tactical_map.paint_labels(current_system, screen_size, ui);
+ });
}
+ self.eguictx.present(
+ &self.window,
+ &self.wgpuctx,
+ scene.encoder_mut(),
+ &view);
scene.submit(&self.wgpuctx);
self.wgpuctx.present_surface();
@@ -155,7 +160,7 @@ impl GameWindow
) {
if width > 0 && height > 0 {
self.wgpuctx.resize(width, height);
- self.tactical_map.resize(&self.wgpuctx, width, height);
+ self.tactical_map.resize(width, height);
self.window.request_redraw();
}
}