Add bindable keyboard shortcuts

This commit is contained in:
2025-03-03 00:06:14 -05:00
parent fcfb75fead
commit bbffde50ec
5 changed files with 411 additions and 15 deletions
+12 -2
View File
@@ -18,12 +18,12 @@ use crate::{
controller::ControllerManager,
emulator::{EmulatorClient, EmulatorCommand, SimId},
images::ImageProcessor,
input::MappingProvider,
input::{MappingProvider, ShortcutProvider},
memory::MemoryClient,
persistence::Persistence,
window::{
AboutWindow, AppWindow, BgMapWindow, CharacterDataWindow, FrameBufferWindow, GameWindow,
GdbServerWindow, InputWindow, ObjectWindow, RegisterWindow, WorldWindow,
GdbServerWindow, InputWindow, ObjectWindow, RegisterWindow, ShortcutsWindow, WorldWindow,
},
};
@@ -44,6 +44,7 @@ pub struct Application {
client: EmulatorClient,
proxy: EventLoopProxy<UserEvent>,
mappings: MappingProvider,
shortcuts: ShortcutProvider,
controllers: ControllerManager,
memory: Arc<MemoryClient>,
images: ImageProcessor,
@@ -63,6 +64,7 @@ impl Application {
let icon = load_icon().ok().map(Arc::new);
let persistence = Persistence::new();
let mappings = MappingProvider::new(persistence.clone());
let shortcuts = ShortcutProvider::new(persistence.clone());
let controllers = ControllerManager::new(client.clone(), &mappings);
let memory = Arc::new(MemoryClient::new(client.clone()));
let images = ImageProcessor::new();
@@ -77,6 +79,7 @@ impl Application {
client,
proxy,
mappings,
shortcuts,
memory,
images,
controllers,
@@ -111,6 +114,7 @@ impl ApplicationHandler<UserEvent> for Application {
self.client.clone(),
self.proxy.clone(),
self.persistence.clone(),
self.shortcuts.clone(),
SimId::Player1,
);
self.open(event_loop, Box::new(app));
@@ -246,11 +250,16 @@ impl ApplicationHandler<UserEvent> for Application {
let input = InputWindow::new(self.mappings.clone());
self.open(event_loop, Box::new(input));
}
UserEvent::OpenShortcuts => {
let shortcuts = ShortcutsWindow::new(self.shortcuts.clone());
self.open(event_loop, Box::new(shortcuts));
}
UserEvent::OpenPlayer2 => {
let p2 = GameWindow::new(
self.client.clone(),
self.proxy.clone(),
self.persistence.clone(),
self.shortcuts.clone(),
SimId::Player2,
);
self.open(event_loop, Box::new(p2));
@@ -503,6 +512,7 @@ pub enum UserEvent {
OpenRegisters(SimId),
OpenDebugger(SimId),
OpenInput,
OpenShortcuts,
OpenPlayer2,
Quit(SimId),
}