mirror of
https://github.com/jugeeya/UltimateTrainingModpack.git
synced 2025-03-23 06:46:11 +00:00
Update standby function to use controller input (#544)
* Update standby function to use controller input * Reuse constants
This commit is contained in:
parent
e07d8f322a
commit
aed803e449
1 changed files with 18 additions and 15 deletions
|
@ -45,6 +45,8 @@ pub enum StartingStatus {
|
||||||
use InputRecordState::*;
|
use InputRecordState::*;
|
||||||
use PossessionState::*;
|
use PossessionState::*;
|
||||||
|
|
||||||
|
const STICK_NEUTRAL: f32 = 0.2;
|
||||||
|
const STICK_CLAMP_MULTIPLIER: f32 = 1.0 / 120.0; // 120.0 = CLAMP_MAX
|
||||||
const FINAL_RECORD_MAX: usize = 150; // Maximum length for input recording sequences (capacity)
|
const FINAL_RECORD_MAX: usize = 150; // Maximum length for input recording sequences (capacity)
|
||||||
const TOTAL_SLOT_COUNT: usize = 5; // Total number of input recording slots
|
const TOTAL_SLOT_COUNT: usize = 5; // Total number of input recording slots
|
||||||
pub static mut FINAL_RECORD_FRAME: usize = FINAL_RECORD_MAX; // The final frame to play back of the currently recorded sequence (size)
|
pub static mut FINAL_RECORD_FRAME: usize = FINAL_RECORD_MAX; // The final frame to play back of the currently recorded sequence (size)
|
||||||
|
@ -277,14 +279,18 @@ pub unsafe fn stop_playback() {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub unsafe fn is_end_standby() -> bool {
|
pub unsafe fn is_end_standby() -> bool {
|
||||||
// Returns whether we should be done with standby this frame (if the fighter is no longer in a waiting status)
|
// Returns whether we should be done with standby this frame (if any significant controller input has been made)
|
||||||
let cpu_module_accessor = get_module_accessor(FighterId::CPU);
|
let first_frame_input = P1_FINAL_MAPPING.lock()[0];
|
||||||
let status_kind = StatusModule::status_kind(cpu_module_accessor) as i32;
|
|
||||||
![
|
let clamped_lstick_x = ((first_frame_input.lstick_x as f32) * STICK_CLAMP_MULTIPLIER).clamp(-1.0, 1.0);
|
||||||
*FIGHTER_STATUS_KIND_WAIT,
|
let clamped_lstick_y = ((first_frame_input.lstick_y as f32) * STICK_CLAMP_MULTIPLIER).clamp(-1.0, 1.0);
|
||||||
*FIGHTER_STATUS_KIND_CLIFF_WAIT,
|
let clamped_rstick_x = ((first_frame_input.rstick_x as f32) * STICK_CLAMP_MULTIPLIER).clamp(-1.0, 1.0);
|
||||||
]
|
let clamped_rstick_y = ((first_frame_input.rstick_y as f32) * STICK_CLAMP_MULTIPLIER).clamp(-1.0, 1.0);
|
||||||
.contains(&status_kind)
|
|
||||||
|
let buttons_pressed = first_frame_input.buttons != Buttons::NONE;
|
||||||
|
let lstick_movement = clamped_lstick_x.abs() >= STICK_NEUTRAL || clamped_lstick_y.abs() >= STICK_NEUTRAL;
|
||||||
|
let rstick_movement = clamped_rstick_x.abs() >= STICK_NEUTRAL || clamped_rstick_y.abs() >= STICK_NEUTRAL;
|
||||||
|
lstick_movement || rstick_movement || buttons_pressed
|
||||||
}
|
}
|
||||||
|
|
||||||
static FIM_OFFSET: usize = 0x17504a0;
|
static FIM_OFFSET: usize = 0x17504a0;
|
||||||
|
@ -362,13 +368,10 @@ unsafe fn set_cpu_controls(p_data: *mut *mut u8) {
|
||||||
(*controller_data).stick_x = x_input_multiplier * ((saved_mapped_inputs.lstick_x as f32) / (i8::MAX as f32));
|
(*controller_data).stick_x = x_input_multiplier * ((saved_mapped_inputs.lstick_x as f32) / (i8::MAX as f32));
|
||||||
(*controller_data).stick_y = (saved_mapped_inputs.lstick_y as f32) / (i8::MAX as f32);
|
(*controller_data).stick_y = (saved_mapped_inputs.lstick_y as f32) / (i8::MAX as f32);
|
||||||
// Clamp stick inputs for separate part of structure
|
// Clamp stick inputs for separate part of structure
|
||||||
const NEUTRAL: f32 = 0.2;
|
let mut clamped_lstick_x = x_input_multiplier * ((saved_mapped_inputs.lstick_x as f32) * STICK_CLAMP_MULTIPLIER).clamp(-1.0, 1.0);
|
||||||
const CLAMP_MAX: f32 = 120.0;
|
let mut clamped_lstick_y = ((saved_mapped_inputs.lstick_y as f32) * STICK_CLAMP_MULTIPLIER).clamp(-1.0, 1.0);
|
||||||
let clamp_mul = 1.0 / CLAMP_MAX;
|
clamped_lstick_x = if clamped_lstick_x.abs() >= STICK_NEUTRAL { clamped_lstick_x } else { 0.0 };
|
||||||
let mut clamped_lstick_x = x_input_multiplier * ((saved_mapped_inputs.lstick_x as f32) * clamp_mul).clamp(-1.0, 1.0);
|
clamped_lstick_y = if clamped_lstick_y.abs() >= STICK_NEUTRAL { clamped_lstick_y } else { 0.0 };
|
||||||
let mut clamped_lstick_y = ((saved_mapped_inputs.lstick_y as f32) * clamp_mul).clamp(-1.0, 1.0);
|
|
||||||
clamped_lstick_x = if clamped_lstick_x.abs() >= NEUTRAL { clamped_lstick_x } else { 0.0 };
|
|
||||||
clamped_lstick_y = if clamped_lstick_y.abs() >= NEUTRAL { clamped_lstick_y } else { 0.0 };
|
|
||||||
(*controller_data).clamped_lstick_x = clamped_lstick_x;
|
(*controller_data).clamped_lstick_x = clamped_lstick_x;
|
||||||
(*controller_data).clamped_lstick_y = clamped_lstick_y;
|
(*controller_data).clamped_lstick_y = clamped_lstick_y;
|
||||||
//println!("CPU Buttons: {:#018b}", (*controller_data).buttons);
|
//println!("CPU Buttons: {:#018b}", (*controller_data).buttons);
|
||||||
|
|
Loading…
Add table
Reference in a new issue