use crate::*;
use crate::xinput::*;
use bytemuck::Zeroable;
#[deprecated = "This undocumented function is reserved for system software to access Buttons::Guide."]
pub fn get_state_ex(user_index: impl Into<User>) -> Result<State, MethodError> {
#[allow(non_snake_case)]
if let Some(XInputGetStateEx) = Imports::get()._XInputGetStateEx {
let mut state = State::zeroed();
let code = unsafe { XInputGetStateEx(user_index.into().into(), &mut state as *mut _ as *mut _) };
check_error_success("XInputGetStateEx", code)?;
Ok(state)
} else {
get_state(user_index)
}
}
#[test] #[allow(deprecated)] fn test_valid_params() {
if let Err(err) = get_state_ex(User::Zero ) { assert_eq!(err.kind(), ERROR::DEVICE_NOT_CONNECTED); }
if let Err(err) = get_state_ex(User::Three) { assert_eq!(err.kind(), ERROR::DEVICE_NOT_CONNECTED); }
}
#[test] #[allow(deprecated)] fn test_bad_arguments() {
assert_eq!(ERROR::BAD_ARGUMENTS, get_state_ex(User::Any));
assert_eq!(ERROR::BAD_ARGUMENTS, get_state_ex(User::from_unchecked(4)));
assert_eq!(ERROR::BAD_ARGUMENTS, get_state_ex(User::from_unchecked(254)));
}