use crate::*;
use winapi::um::xinput::*;
use bytemuck::{Pod, Zeroable};
#[derive(Clone, Copy, Debug)]
#[derive(Default, Pod, Zeroable)]
#[repr(C)] pub struct Gamepad {
pub buttons: xinput::Buttons,
pub left_trigger: u8,
pub right_trigger: u8,
pub left_thumb_x: i16,
pub left_thumb_y: i16,
pub right_thumb_x: i16,
pub right_thumb_y: i16,
}
impl Gamepad {
pub const TRIGGER_THRESHOLD : u8 = XINPUT_GAMEPAD_TRIGGER_THRESHOLD;
pub const LEFT_THUMB_DEADZONE : i16 = XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE;
pub const RIGHT_THUMB_DEADZONE : i16 = XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE;
}
test_layout_only! {
Gamepad => winapi::um::xinput::XINPUT_GAMEPAD {
buttons => wButtons,
left_trigger => bLeftTrigger,
right_trigger => bRightTrigger,
left_thumb_x => sThumbLX,
left_thumb_y => sThumbLY,
right_thumb_x => sThumbRX,
right_thumb_y => sThumbRY,
}
}
#[test] fn test_traits_for_coverage() {
let _gamepad = Gamepad::default();
let _gamepad = Gamepad::zeroed();
let _gamepad = _gamepad.clone();
dbg!(_gamepad);
}