From ae7ab1e204384583b9e9206fc9696e3f0e7bfafc Mon Sep 17 00:00:00 2001 From: Simon Gellis Date: Sun, 2 Feb 2025 18:33:59 -0500 Subject: [PATCH] Dummy second window --- src/app.rs | 8 ++++- src/window.rs | 4 +-- src/window/game.rs | 6 ++++ src/window/vram.rs | 5 ++++ src/window/vram/bgmap.rs | 29 +++++++++++++++++++ .../{character_data.rs => vram/chardata.rs} | 3 +- 6 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 src/window/vram.rs create mode 100644 src/window/vram/bgmap.rs rename src/window/{character_data.rs => vram/chardata.rs} (99%) diff --git a/src/app.rs b/src/app.rs index 4515406..50661ca 100644 --- a/src/app.rs +++ b/src/app.rs @@ -21,7 +21,8 @@ use crate::{ persistence::Persistence, vram::VramLoader, window::{ - AboutWindow, AppWindow, CharacterDataWindow, GameWindow, GdbServerWindow, InputWindow, + AboutWindow, AppWindow, BgMapWindow, CharacterDataWindow, GameWindow, GdbServerWindow, + InputWindow, }, }; @@ -203,6 +204,10 @@ impl ApplicationHandler for Application { let vram = CharacterDataWindow::new(sim_id); self.open(event_loop, Box::new(vram)); } + UserEvent::OpenBgMap(sim_id) => { + let bgmap = BgMapWindow::new(sim_id); + self.open(event_loop, Box::new(bgmap)); + } UserEvent::OpenDebugger(sim_id) => { let debugger = GdbServerWindow::new(sim_id, self.client.clone(), self.proxy.clone()); @@ -415,6 +420,7 @@ pub enum UserEvent { GamepadEvent(gilrs::Event), OpenAbout, OpenCharacterData(SimId), + OpenBgMap(SimId), OpenDebugger(SimId), OpenInput, OpenPlayer2, diff --git a/src/window.rs b/src/window.rs index 2bccf7b..9c47b75 100644 --- a/src/window.rs +++ b/src/window.rs @@ -1,19 +1,19 @@ pub use about::AboutWindow; -pub use character_data::CharacterDataWindow; use egui::{Context, ViewportBuilder, ViewportId}; pub use game::GameWindow; pub use gdb::GdbServerWindow; pub use input::InputWindow; +pub use vram::{BgMapWindow, CharacterDataWindow}; use winit::event::KeyEvent; use crate::emulator::SimId; mod about; -mod character_data; mod game; mod game_screen; mod gdb; mod input; +mod vram; pub trait AppWindow { fn viewport_id(&self) -> ViewportId; diff --git a/src/window/game.rs b/src/window/game.rs index 680163a..6c50736 100644 --- a/src/window/game.rs +++ b/src/window/game.rs @@ -138,6 +138,12 @@ impl GameWindow { .unwrap(); ui.close_menu(); } + if ui.button("Background Maps").clicked() { + self.proxy + .send_event(UserEvent::OpenBgMap(self.sim_id)) + .unwrap(); + ui.close_menu(); + } }); ui.menu_button("About", |ui| { self.proxy.send_event(UserEvent::OpenAbout).unwrap(); diff --git a/src/window/vram.rs b/src/window/vram.rs new file mode 100644 index 0000000..99fb788 --- /dev/null +++ b/src/window/vram.rs @@ -0,0 +1,5 @@ +mod bgmap; +mod chardata; + +pub use bgmap::*; +pub use chardata::*; diff --git a/src/window/vram/bgmap.rs b/src/window/vram/bgmap.rs new file mode 100644 index 0000000..1a9d164 --- /dev/null +++ b/src/window/vram/bgmap.rs @@ -0,0 +1,29 @@ +use egui::{CentralPanel, Context, ViewportBuilder, ViewportId}; + +use crate::{emulator::SimId, window::AppWindow}; + +pub struct BgMapWindow { + sim_id: SimId, +} + +impl BgMapWindow { + pub fn new(sim_id: SimId) -> Self { + Self { sim_id } + } +} + +impl AppWindow for BgMapWindow { + fn viewport_id(&self) -> ViewportId { + ViewportId::from_hash_of(format!("bgmap-{}", self.sim_id)) + } + + fn initial_viewport(&self) -> ViewportBuilder { + ViewportBuilder::default() + .with_title(format!("BG Map Data ({})", self.sim_id)) + .with_inner_size((640.0, 480.0)) + } + + fn show(&mut self, ctx: &Context) { + CentralPanel::default().show(ctx, |ui| ui.label("TODO")); + } +} diff --git a/src/window/character_data.rs b/src/window/vram/chardata.rs similarity index 99% rename from src/window/character_data.rs rename to src/window/vram/chardata.rs index b908988..81f49b3 100644 --- a/src/window/character_data.rs +++ b/src/window/vram/chardata.rs @@ -7,10 +7,9 @@ use egui_extras::{Column, Size, StripBuilder, TableBuilder}; use crate::{ emulator::SimId, vram::{VramPalette, VramResource}, + window::AppWindow, }; -use super::AppWindow; - pub struct CharacterDataWindow { sim_id: SimId, palette: VramPalette,