VIP inspection tooling #4
			
				
			
		
		
		
	| 
						 | 
					@ -21,7 +21,8 @@ use crate::{
 | 
				
			||||||
    persistence::Persistence,
 | 
					    persistence::Persistence,
 | 
				
			||||||
    vram::VramLoader,
 | 
					    vram::VramLoader,
 | 
				
			||||||
    window::{
 | 
					    window::{
 | 
				
			||||||
        AboutWindow, AppWindow, CharacterDataWindow, GameWindow, GdbServerWindow, InputWindow,
 | 
					        AboutWindow, AppWindow, BgMapWindow, CharacterDataWindow, GameWindow, GdbServerWindow,
 | 
				
			||||||
 | 
					        InputWindow,
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -212,6 +213,10 @@ impl ApplicationHandler<UserEvent> for Application {
 | 
				
			||||||
                let vram = CharacterDataWindow::new(sim_id);
 | 
					                let vram = CharacterDataWindow::new(sim_id);
 | 
				
			||||||
                self.open(event_loop, Box::new(vram));
 | 
					                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) => {
 | 
					            UserEvent::OpenDebugger(sim_id) => {
 | 
				
			||||||
                let debugger =
 | 
					                let debugger =
 | 
				
			||||||
                    GdbServerWindow::new(sim_id, self.client.clone(), self.proxy.clone());
 | 
					                    GdbServerWindow::new(sim_id, self.client.clone(), self.proxy.clone());
 | 
				
			||||||
| 
						 | 
					@ -473,6 +478,7 @@ pub enum UserEvent {
 | 
				
			||||||
    GamepadEvent(gilrs::Event),
 | 
					    GamepadEvent(gilrs::Event),
 | 
				
			||||||
    OpenAbout,
 | 
					    OpenAbout,
 | 
				
			||||||
    OpenCharacterData(SimId),
 | 
					    OpenCharacterData(SimId),
 | 
				
			||||||
 | 
					    OpenBgMap(SimId),
 | 
				
			||||||
    OpenDebugger(SimId),
 | 
					    OpenDebugger(SimId),
 | 
				
			||||||
    OpenInput,
 | 
					    OpenInput,
 | 
				
			||||||
    OpenPlayer2,
 | 
					    OpenPlayer2,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,19 +1,19 @@
 | 
				
			||||||
pub use about::AboutWindow;
 | 
					pub use about::AboutWindow;
 | 
				
			||||||
pub use character_data::CharacterDataWindow;
 | 
					 | 
				
			||||||
use egui::{Context, ViewportBuilder, ViewportId};
 | 
					use egui::{Context, ViewportBuilder, ViewportId};
 | 
				
			||||||
pub use game::GameWindow;
 | 
					pub use game::GameWindow;
 | 
				
			||||||
pub use gdb::GdbServerWindow;
 | 
					pub use gdb::GdbServerWindow;
 | 
				
			||||||
pub use input::InputWindow;
 | 
					pub use input::InputWindow;
 | 
				
			||||||
 | 
					pub use vram::{BgMapWindow, CharacterDataWindow};
 | 
				
			||||||
use winit::event::KeyEvent;
 | 
					use winit::event::KeyEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use crate::emulator::SimId;
 | 
					use crate::emulator::SimId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mod about;
 | 
					mod about;
 | 
				
			||||||
mod character_data;
 | 
					 | 
				
			||||||
mod game;
 | 
					mod game;
 | 
				
			||||||
mod game_screen;
 | 
					mod game_screen;
 | 
				
			||||||
mod gdb;
 | 
					mod gdb;
 | 
				
			||||||
mod input;
 | 
					mod input;
 | 
				
			||||||
 | 
					mod vram;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub trait AppWindow {
 | 
					pub trait AppWindow {
 | 
				
			||||||
    fn viewport_id(&self) -> ViewportId;
 | 
					    fn viewport_id(&self) -> ViewportId;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -138,6 +138,12 @@ impl GameWindow {
 | 
				
			||||||
                    .unwrap();
 | 
					                    .unwrap();
 | 
				
			||||||
                ui.close_menu();
 | 
					                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| {
 | 
					        ui.menu_button("About", |ui| {
 | 
				
			||||||
            self.proxy.send_event(UserEvent::OpenAbout).unwrap();
 | 
					            self.proxy.send_event(UserEvent::OpenAbout).unwrap();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					mod bgmap;
 | 
				
			||||||
 | 
					mod chardata;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pub use bgmap::*;
 | 
				
			||||||
 | 
					pub use chardata::*;
 | 
				
			||||||
| 
						 | 
					@ -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"));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -7,10 +7,9 @@ use egui_extras::{Column, Size, StripBuilder, TableBuilder};
 | 
				
			||||||
use crate::{
 | 
					use crate::{
 | 
				
			||||||
    emulator::SimId,
 | 
					    emulator::SimId,
 | 
				
			||||||
    vram::{VramPalette, VramResource},
 | 
					    vram::{VramPalette, VramResource},
 | 
				
			||||||
 | 
					    window::AppWindow,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use super::AppWindow;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
pub struct CharacterDataWindow {
 | 
					pub struct CharacterDataWindow {
 | 
				
			||||||
    sim_id: SimId,
 | 
					    sim_id: SimId,
 | 
				
			||||||
    palette: VramPalette,
 | 
					    palette: VramPalette,
 | 
				
			||||||
		Loading…
	
		Reference in New Issue