Skip to content

Commit cfc89a7

Browse files
committed
refactor; add run condition for windows
1 parent 78cbf5e commit cfc89a7

File tree

6 files changed

+31
-26
lines changed

6 files changed

+31
-26
lines changed

rgis-ui/src/debug_window.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ impl DebugWindow<'_, '_> {
119119
}
120120
}
121121

122-
impl crate::Window for DebugWindow<'_, '_> {
122+
impl crate::window::Window for DebugWindow<'_, '_> {
123123
type Item<'w, 's> = DebugWindow<'w, 's>;
124124

125125
fn title(&self) -> &str {

rgis-ui/src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ mod top_panel;
2323
mod welcome_window;
2424
mod widgets;
2525

26-
mod window;
27-
pub use window::{render_window_system, IsWindowOpen, Window};
26+
pub(crate) mod window;
2827

2928
pub struct Plugin;
3029

rgis-ui/src/systems.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::render_window_system;
1+
use crate::window;
22
use bevy::{prelude::*, window::PrimaryWindow};
33
use bevy_egui::{
44
egui::{self, Widget},
@@ -292,7 +292,7 @@ fn render_top_panel(
292292
mut app_settings: ResMut<rgis_settings::RgisSettings>,
293293
mut top_panel_height: ResMut<rgis_units::TopPanelHeight>,
294294
mut is_debug_window_open: ResMut<
295-
crate::IsWindowOpen<crate::debug_window::DebugWindow<'static, 'static>>,
295+
window::IsWindowOpen<crate::debug_window::DebugWindow<'static, 'static>>,
296296
>,
297297
) {
298298
let Ok(mut window) = windows.get_single_mut() else {
@@ -375,14 +375,16 @@ pub fn configure(app: &mut App) {
375375
),
376376
);
377377

378-
app.insert_resource(crate::IsWindowOpen::<crate::debug_window::DebugWindow>::closed());
379-
app.insert_resource(crate::IsWindowOpen::<crate::welcome_window::WelcomeWindow>::open());
378+
app.insert_resource(window::IsWindowOpen::<crate::debug_window::DebugWindow>::closed());
379+
app.insert_resource(window::IsWindowOpen::<crate::welcome_window::WelcomeWindow>::open());
380380
app.add_systems(
381381
Update,
382-
render_window_system::<crate::debug_window::DebugWindow>,
382+
window::render_window_system::<crate::debug_window::DebugWindow>
383+
.run_if(window::run_if_is_window_open::<crate::debug_window::DebugWindow>),
383384
);
384385
app.add_systems(
385386
Update,
386-
render_window_system::<crate::welcome_window::WelcomeWindow>,
387+
window::render_window_system::<crate::welcome_window::WelcomeWindow>
388+
.run_if(window::run_if_is_window_open::<crate::welcome_window::WelcomeWindow>),
387389
);
388390
}

rgis-ui/src/top_panel.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::window;
12
use bevy::prelude::*;
23
use bevy_egui::egui;
34

@@ -7,7 +8,8 @@ pub(crate) struct TopPanel<'a, 'w, 's> {
78
pub window: &'a mut Window,
89
pub app_settings: &'a mut rgis_settings::RgisSettings,
910
pub top_panel_height: &'a mut rgis_units::TopPanelHeight,
10-
pub is_debug_window_open: &'a mut crate::IsWindowOpen<crate::debug_window::DebugWindow<'w, 's>>,
11+
pub is_debug_window_open:
12+
&'a mut window::IsWindowOpen<crate::debug_window::DebugWindow<'w, 's>>,
1113
}
1214

1315
impl TopPanel<'_, '_, '_> {

rgis-ui/src/welcome_window.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ impl<'w, 's> egui::Widget for WelcomeWindow<'w, 's> {
1616
}
1717
}
1818

19-
impl crate::Window for WelcomeWindow<'_, '_> {
19+
impl crate::window::Window for WelcomeWindow<'_, '_> {
2020
type Item<'w, 's> = WelcomeWindow<'w, 's>;
2121

2222
fn title(&self) -> &str {

rgis-ui/src/window.rs

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,25 @@ pub trait Window: egui::Widget + SystemParam + Send + Sync {
1515
}
1616

1717
pub fn render_window_system<W: Window + 'static>(
18-
window: <W as crate::Window>::Item<'_, '_>,
18+
window: <W as Window>::Item<'_, '_>,
1919
mut egui_ctx_query: Query<&'static mut EguiContext, With<PrimaryWindow>>,
20-
mut is_window_open: ResMut<crate::IsWindowOpen<W>>,
20+
mut is_window_open: ResMut<IsWindowOpen<W>>,
2121
) {
22-
if is_window_open.0 {
23-
let mut egui_ctx = egui_ctx_query.single_mut();
24-
let (anchor_align, anchor_offset) = window.default_anchor();
25-
26-
egui::Window::new(window.title())
27-
.default_width(window.default_width())
28-
.open(&mut is_window_open.0)
29-
.resizable(false)
30-
.anchor(anchor_align, anchor_offset)
31-
.show(egui_ctx.get_mut(), |ui| {
32-
ui.add(window);
33-
});
34-
}
22+
let mut egui_ctx = egui_ctx_query.single_mut();
23+
let (anchor_align, anchor_offset) = window.default_anchor();
24+
25+
egui::Window::new(window.title())
26+
.default_width(window.default_width())
27+
.open(&mut is_window_open.0)
28+
.resizable(false)
29+
.anchor(anchor_align, anchor_offset)
30+
.show(egui_ctx.get_mut(), |ui| {
31+
ui.add(window);
32+
});
33+
}
34+
35+
pub fn run_if_is_window_open<W: Window + 'static>(is_window_open: Res<IsWindowOpen<W>>) -> bool {
36+
is_window_open.0
3537
}
3638

3739
#[derive(Resource)]

0 commit comments

Comments
 (0)