Add bindable keyboard shortcuts
This commit is contained in:
+12
-2
@@ -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),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user