Implement side-by-side view

This commit is contained in:
2024-12-01 15:52:11 -05:00
parent 2e5d5e140f
commit 761b434108
3 changed files with 59 additions and 6 deletions
+26 -2
View File
@@ -90,7 +90,10 @@ impl GameWindow {
for scale in 1..=4 {
let label = format!("x{scale}");
let scale = scale as f32;
let dims = (384.0 * scale, 224.0 * scale + 22.0).into();
let dims = {
let Vec2 { x, y } = self.display_mode.proportions();
Vec2::new(x * scale, y * scale + 22.0)
};
if ui
.selectable_button((current_dims - dims).length() < 1.0, label)
.clicked()
@@ -102,6 +105,7 @@ impl GameWindow {
});
ui.menu_button("Display Mode", |ui| {
let old_proportions = self.display_mode.proportions();
if ui
.selectable_option(&mut self.display_mode, DisplayMode::Anaglyph, "Anaglyph")
.clicked()
@@ -120,6 +124,25 @@ impl GameWindow {
{
ui.close_menu();
}
if ui
.selectable_option(
&mut self.display_mode,
DisplayMode::SideBySide,
"Side by Side",
)
.clicked()
{
ui.close_menu();
}
let new_proportions = self.display_mode.proportions();
let scale = new_proportions / old_proportions;
if scale != Vec2::new(1.0, 1.0) {
let current_dims = ctx.input(|i| i.viewport().inner_rect.unwrap());
let current_dims = current_dims.max - current_dims.min;
ctx.send_viewport_cmd(ViewportCommand::InnerSize(current_dims * scale));
}
});
ui.menu_button("Colors", |ui| {
for preset in COLOR_PRESETS {
@@ -183,9 +206,10 @@ impl AppWindow for GameWindow {
}
fn initial_viewport(&self) -> ViewportBuilder {
let dimensions = self.display_mode.proportions() + Vec2::new(0.0, 22.0);
ViewportBuilder::default()
.with_title("Shrooms VB")
.with_inner_size((384.0, 246.0))
.with_inner_size(dimensions)
}
fn show(&mut self, ctx: &Context) {