mirror of
https://github.com/gopher64/gopher64.git
synced 2026-07-11 01:25:20 +02:00
Controller code cleanup (#816)
* controller hotkeys * more * more * more * more * more
This commit is contained in:
@@ -191,7 +191,7 @@ pub fn pak_switch_event(device: &mut device::Device) {
|
||||
pak_type: new_pak_type,
|
||||
});
|
||||
ui::video::onscreen_message(
|
||||
"MemPak selected",
|
||||
&format!("P{} MemPak selected", i + 1),
|
||||
ui::video::MESSAGE_LENGTH_MESSAGE_SHORT,
|
||||
);
|
||||
} else if new_pak_type == PakType::RumblePak {
|
||||
@@ -201,7 +201,7 @@ pub fn pak_switch_event(device: &mut device::Device) {
|
||||
pak_type: new_pak_type,
|
||||
});
|
||||
ui::video::onscreen_message(
|
||||
"RumblePak selected",
|
||||
&format!("P{} RumblePak selected", i + 1),
|
||||
ui::video::MESSAGE_LENGTH_MESSAGE_SHORT,
|
||||
);
|
||||
} else if new_pak_type == PakType::TransferPak {
|
||||
@@ -211,7 +211,7 @@ pub fn pak_switch_event(device: &mut device::Device) {
|
||||
pak_type: new_pak_type,
|
||||
});
|
||||
ui::video::onscreen_message(
|
||||
"TransferPak selected",
|
||||
&format!("P{} TransferPak selected", i + 1),
|
||||
ui::video::MESSAGE_LENGTH_MESSAGE_SHORT,
|
||||
);
|
||||
}
|
||||
|
||||
+14
-61
@@ -119,50 +119,6 @@ fn set_axis_from_joystick(
|
||||
(x, y)
|
||||
}
|
||||
|
||||
fn get_axis_from_i32(axis: i32) -> sdl3_sys::gamepad::SDL_GamepadAxis {
|
||||
match axis {
|
||||
0 => sdl3_sys::gamepad::SDL_GamepadAxis::LEFTX,
|
||||
1 => sdl3_sys::gamepad::SDL_GamepadAxis::LEFTY,
|
||||
2 => sdl3_sys::gamepad::SDL_GamepadAxis::RIGHTX,
|
||||
3 => sdl3_sys::gamepad::SDL_GamepadAxis::RIGHTY,
|
||||
4 => sdl3_sys::gamepad::SDL_GamepadAxis::LEFT_TRIGGER,
|
||||
5 => sdl3_sys::gamepad::SDL_GamepadAxis::RIGHT_TRIGGER,
|
||||
_ => panic!("Invalid axis"),
|
||||
}
|
||||
}
|
||||
|
||||
fn get_button_from_i32(button: i32) -> sdl3_sys::gamepad::SDL_GamepadButton {
|
||||
match button {
|
||||
0 => sdl3_sys::gamepad::SDL_GamepadButton::SOUTH,
|
||||
1 => sdl3_sys::gamepad::SDL_GamepadButton::EAST,
|
||||
2 => sdl3_sys::gamepad::SDL_GamepadButton::WEST,
|
||||
3 => sdl3_sys::gamepad::SDL_GamepadButton::NORTH,
|
||||
4 => sdl3_sys::gamepad::SDL_GamepadButton::BACK,
|
||||
5 => sdl3_sys::gamepad::SDL_GamepadButton::GUIDE,
|
||||
6 => sdl3_sys::gamepad::SDL_GamepadButton::START,
|
||||
7 => sdl3_sys::gamepad::SDL_GamepadButton::LEFT_STICK,
|
||||
8 => sdl3_sys::gamepad::SDL_GamepadButton::RIGHT_STICK,
|
||||
9 => sdl3_sys::gamepad::SDL_GamepadButton::LEFT_SHOULDER,
|
||||
10 => sdl3_sys::gamepad::SDL_GamepadButton::RIGHT_SHOULDER,
|
||||
11 => sdl3_sys::gamepad::SDL_GamepadButton::DPAD_UP,
|
||||
12 => sdl3_sys::gamepad::SDL_GamepadButton::DPAD_DOWN,
|
||||
13 => sdl3_sys::gamepad::SDL_GamepadButton::DPAD_LEFT,
|
||||
14 => sdl3_sys::gamepad::SDL_GamepadButton::DPAD_RIGHT,
|
||||
15 => sdl3_sys::gamepad::SDL_GamepadButton::MISC1,
|
||||
16 => sdl3_sys::gamepad::SDL_GamepadButton::RIGHT_PADDLE1,
|
||||
17 => sdl3_sys::gamepad::SDL_GamepadButton::LEFT_PADDLE1,
|
||||
18 => sdl3_sys::gamepad::SDL_GamepadButton::RIGHT_PADDLE2,
|
||||
19 => sdl3_sys::gamepad::SDL_GamepadButton::LEFT_PADDLE2,
|
||||
20 => sdl3_sys::gamepad::SDL_GamepadButton::TOUCHPAD,
|
||||
21 => sdl3_sys::gamepad::SDL_GamepadButton::MISC2,
|
||||
22 => sdl3_sys::gamepad::SDL_GamepadButton::MISC3,
|
||||
23 => sdl3_sys::gamepad::SDL_GamepadButton::MISC4,
|
||||
24 => sdl3_sys::gamepad::SDL_GamepadButton::MISC5,
|
||||
25 => sdl3_sys::gamepad::SDL_GamepadButton::MISC6,
|
||||
_ => panic!("Invalid button"),
|
||||
}
|
||||
}
|
||||
|
||||
fn set_axis_from_controller(
|
||||
profile: &ui::config::InputProfile,
|
||||
controller: *mut sdl3_sys::gamepad::SDL_Gamepad,
|
||||
@@ -173,7 +129,7 @@ fn set_axis_from_controller(
|
||||
let axis_position = unsafe {
|
||||
sdl3_sys::gamepad::SDL_GetGamepadAxis(
|
||||
controller,
|
||||
get_axis_from_i32(profile.controller_axis[AXIS_LEFT].id),
|
||||
sdl3_sys::gamepad::SDL_GamepadAxis(profile.controller_axis[AXIS_LEFT].id),
|
||||
)
|
||||
};
|
||||
if axis_position as isize * profile.controller_axis[AXIS_LEFT].axis as isize > 0 {
|
||||
@@ -184,7 +140,7 @@ fn set_axis_from_controller(
|
||||
let axis_position = unsafe {
|
||||
sdl3_sys::gamepad::SDL_GetGamepadAxis(
|
||||
controller,
|
||||
get_axis_from_i32(profile.controller_axis[AXIS_RIGHT].id),
|
||||
sdl3_sys::gamepad::SDL_GamepadAxis(profile.controller_axis[AXIS_RIGHT].id),
|
||||
)
|
||||
};
|
||||
if axis_position as isize * profile.controller_axis[AXIS_RIGHT].axis as isize > 0 {
|
||||
@@ -195,7 +151,7 @@ fn set_axis_from_controller(
|
||||
let axis_position = unsafe {
|
||||
sdl3_sys::gamepad::SDL_GetGamepadAxis(
|
||||
controller,
|
||||
get_axis_from_i32(profile.controller_axis[AXIS_DOWN].id),
|
||||
sdl3_sys::gamepad::SDL_GamepadAxis(profile.controller_axis[AXIS_DOWN].id),
|
||||
)
|
||||
};
|
||||
if axis_position as isize * profile.controller_axis[AXIS_DOWN].axis as isize > 0 {
|
||||
@@ -206,7 +162,7 @@ fn set_axis_from_controller(
|
||||
let axis_position = unsafe {
|
||||
sdl3_sys::gamepad::SDL_GetGamepadAxis(
|
||||
controller,
|
||||
get_axis_from_i32(profile.controller_axis[AXIS_UP].id),
|
||||
sdl3_sys::gamepad::SDL_GamepadAxis(profile.controller_axis[AXIS_UP].id),
|
||||
)
|
||||
};
|
||||
if axis_position as isize * profile.controller_axis[AXIS_UP].axis as isize > 0 {
|
||||
@@ -291,7 +247,7 @@ fn set_buttons_from_controller(
|
||||
*keys |= (unsafe {
|
||||
sdl3_sys::gamepad::SDL_GetGamepadButton(
|
||||
controller,
|
||||
get_button_from_i32(profile_controller_button.id),
|
||||
sdl3_sys::gamepad::SDL_GamepadButton(profile_controller_button.id),
|
||||
)
|
||||
} as u32)
|
||||
<< i;
|
||||
@@ -302,7 +258,7 @@ fn set_buttons_from_controller(
|
||||
let axis_position = unsafe {
|
||||
sdl3_sys::gamepad::SDL_GetGamepadAxis(
|
||||
controller,
|
||||
get_axis_from_i32(profile_controller_axis.id),
|
||||
sdl3_sys::gamepad::SDL_GamepadAxis(profile_controller_axis.id),
|
||||
)
|
||||
};
|
||||
if axis_position as isize * profile_controller_axis.axis as isize > 0
|
||||
@@ -356,7 +312,7 @@ fn change_paks(
|
||||
pressed = unsafe {
|
||||
sdl3_sys::gamepad::SDL_GetGamepadButton(
|
||||
controller,
|
||||
get_button_from_i32(controller_button.id),
|
||||
sdl3_sys::gamepad::SDL_GamepadButton(controller_button.id),
|
||||
)
|
||||
};
|
||||
} else if joystick_button.enabled && !joystick.is_null() {
|
||||
@@ -695,8 +651,7 @@ pub fn configure_input_profile(ui: &mut ui::Ui, profile: String, dinput: bool, d
|
||||
);
|
||||
std::thread::sleep(std::time::Duration::from_millis(100));
|
||||
while unsafe { sdl3_sys::events::SDL_PollEvent(&mut event) } {
|
||||
let event_type = unsafe { event.r#type };
|
||||
if event_type == u32::from(sdl3_sys::events::SDL_EVENT_WINDOW_CLOSE_REQUESTED) {
|
||||
if event.event_type() == sdl3_sys::events::SDL_EVENT_WINDOW_CLOSE_REQUESTED {
|
||||
close_input_profile_window(
|
||||
open_joysticks,
|
||||
open_controllers,
|
||||
@@ -706,7 +661,7 @@ pub fn configure_input_profile(ui: &mut ui::Ui, profile: String, dinput: bool, d
|
||||
window,
|
||||
);
|
||||
return;
|
||||
} else if event_type == u32::from(sdl3_sys::events::SDL_EVENT_KEY_DOWN) {
|
||||
} else if event.event_type() == sdl3_sys::events::SDL_EVENT_KEY_DOWN {
|
||||
if unsafe {
|
||||
!event.key.repeat
|
||||
&& event.key.scancode != sdl3_sys::scancode::SDL_SCANCODE_LALT
|
||||
@@ -718,7 +673,7 @@ pub fn configure_input_profile(ui: &mut ui::Ui, profile: String, dinput: bool, d
|
||||
};
|
||||
key_set = true
|
||||
}
|
||||
} else if event_type == u32::from(sdl3_sys::events::SDL_EVENT_GAMEPAD_BUTTON_DOWN) {
|
||||
} else if event.event_type() == sdl3_sys::events::SDL_EVENT_GAMEPAD_BUTTON_DOWN {
|
||||
if !open_controllers.is_empty() {
|
||||
new_controller_buttons[*value] = ui::config::InputKeyButton {
|
||||
enabled: true,
|
||||
@@ -726,7 +681,7 @@ pub fn configure_input_profile(ui: &mut ui::Ui, profile: String, dinput: bool, d
|
||||
};
|
||||
key_set = true
|
||||
}
|
||||
} else if event_type == u32::from(sdl3_sys::events::SDL_EVENT_GAMEPAD_AXIS_MOTION) {
|
||||
} else if event.event_type() == sdl3_sys::events::SDL_EVENT_GAMEPAD_AXIS_MOTION {
|
||||
let axis_value = unsafe { event.gaxis.value };
|
||||
let axis = unsafe { event.gaxis.axis };
|
||||
if !open_controllers.is_empty()
|
||||
@@ -743,8 +698,7 @@ pub fn configure_input_profile(ui: &mut ui::Ui, profile: String, dinput: bool, d
|
||||
key_set = true
|
||||
}
|
||||
}
|
||||
} else if event_type == u32::from(sdl3_sys::events::SDL_EVENT_JOYSTICK_BUTTON_DOWN)
|
||||
{
|
||||
} else if event.event_type() == sdl3_sys::events::SDL_EVENT_JOYSTICK_BUTTON_DOWN {
|
||||
if !open_joysticks.is_empty() {
|
||||
new_joystick_buttons[*value] = ui::config::InputKeyButton {
|
||||
enabled: true,
|
||||
@@ -752,7 +706,7 @@ pub fn configure_input_profile(ui: &mut ui::Ui, profile: String, dinput: bool, d
|
||||
};
|
||||
key_set = true
|
||||
}
|
||||
} else if event_type == u32::from(sdl3_sys::events::SDL_EVENT_JOYSTICK_HAT_MOTION) {
|
||||
} else if event.event_type() == sdl3_sys::events::SDL_EVENT_JOYSTICK_HAT_MOTION {
|
||||
let state = unsafe { event.jhat.value };
|
||||
let hat = unsafe { event.jhat.hat };
|
||||
if !open_joysticks.is_empty() && state != sdl3_sys::joystick::SDL_HAT_CENTERED {
|
||||
@@ -763,8 +717,7 @@ pub fn configure_input_profile(ui: &mut ui::Ui, profile: String, dinput: bool, d
|
||||
};
|
||||
key_set = true
|
||||
}
|
||||
} else if event_type == u32::from(sdl3_sys::events::SDL_EVENT_JOYSTICK_AXIS_MOTION)
|
||||
{
|
||||
} else if event.event_type() == sdl3_sys::events::SDL_EVENT_JOYSTICK_AXIS_MOTION {
|
||||
let axis_value = unsafe { event.jaxis.value };
|
||||
let axis = unsafe { event.jaxis.axis };
|
||||
if !open_joysticks.is_empty()
|
||||
|
||||
Reference in New Issue
Block a user