mirror of
https://github.com/jugeeya/UltimateTrainingModpack.git
synced 2024-11-24 02:44:17 +00:00
[Build] Clippy Fixes (#554)
* Add slots as menu options, randomize playback slots * Clippy Fixes
This commit is contained in:
parent
3a40d46fca
commit
822db3969f
12 changed files with 50 additions and 44 deletions
|
@ -40,10 +40,13 @@ pub struct Uuid {
|
||||||
|
|
||||||
impl Uuid {
|
impl Uuid {
|
||||||
pub fn to_str(&self) -> String {
|
pub fn to_str(&self) -> String {
|
||||||
|
use std::fmt::Write;
|
||||||
self.data
|
self.data
|
||||||
.iter()
|
.iter()
|
||||||
.map(|i| format!("{i:02x}"))
|
.fold(String::new(), |mut output, b| {
|
||||||
.collect::<String>()
|
let _ = write!(output, "{b:02x}");
|
||||||
|
output
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ pub fn is_training_mode() -> bool {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_category(module_accessor: &mut app::BattleObjectModuleAccessor) -> i32 {
|
pub fn get_category(module_accessor: &app::BattleObjectModuleAccessor) -> i32 {
|
||||||
(module_accessor.info >> 28) as u8 as i32
|
(module_accessor.info >> 28) as u8 as i32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ pub fn get_module_accessor(fighter_id: FighterId) -> *mut app::BattleObjectModul
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_fighter(module_accessor: &mut app::BattleObjectModuleAccessor) -> bool {
|
pub fn is_fighter(module_accessor: &app::BattleObjectModuleAccessor) -> bool {
|
||||||
get_category(module_accessor) == BATTLE_OBJECT_CATEGORY_FIGHTER
|
get_category(module_accessor) == BATTLE_OBJECT_CATEGORY_FIGHTER
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ fn update_frame_advantage(new_frame_adv: i32) {
|
||||||
b: 8,
|
b: 8,
|
||||||
a: 255,
|
a: 255,
|
||||||
},
|
},
|
||||||
x if x == 0 => ResColor {
|
0 => ResColor {
|
||||||
r: 0,
|
r: 0,
|
||||||
g: 0,
|
g: 0,
|
||||||
b: 0,
|
b: 0,
|
||||||
|
|
|
@ -45,7 +45,7 @@ pub unsafe fn handle_correct_damage_vector_common(
|
||||||
original!()(fighter, arg1)
|
original!()(fighter, arg1)
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe fn mod_handle_di(fighter: &mut L2CFighterCommon, _arg1: L2CValue) {
|
unsafe fn mod_handle_di(fighter: &L2CFighterCommon, _arg1: L2CValue) {
|
||||||
if MENU.di_state == Direction::empty() {
|
if MENU.di_state == Direction::empty() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ use smash::app::{BattleObjectModuleAccessor, lua_bind::*, utility};
|
||||||
use smash::lib::lua_const::*;
|
use smash::lib::lua_const::*;
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use parking_lot::Mutex;
|
use parking_lot::Mutex;
|
||||||
|
use std::cmp::Ordering;
|
||||||
use crate::training::input_recording::structures::*;
|
use crate::training::input_recording::structures::*;
|
||||||
use crate::common::consts::{RecordTrigger, HitstunPlayback, FighterId};
|
use crate::common::consts::{RecordTrigger, HitstunPlayback, FighterId};
|
||||||
use crate::common::{MENU, get_module_accessor, is_in_hitstun, is_in_shieldstun};
|
use crate::common::{MENU, get_module_accessor, is_in_hitstun, is_in_shieldstun};
|
||||||
|
@ -164,6 +165,9 @@ fn into_transition_term(starting_status: StartingStatus) -> i32 {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub unsafe fn get_command_flag_cat(module_accessor: &mut BattleObjectModuleAccessor) {
|
pub unsafe fn get_command_flag_cat(module_accessor: &mut BattleObjectModuleAccessor) {
|
||||||
|
// Allow this because sometimes we want to make sure our NNSDK doesn't have
|
||||||
|
// an erroneous definition
|
||||||
|
#[allow(clippy::unnecessary_cast)]
|
||||||
let entry_id_int =
|
let entry_id_int =
|
||||||
WorkModule::get_int(module_accessor, *FIGHTER_INSTANCE_WORK_ID_INT_ENTRY_ID) as i32;
|
WorkModule::get_int(module_accessor, *FIGHTER_INSTANCE_WORK_ID_INT_ENTRY_ID) as i32;
|
||||||
let fighter_kind = utility::get_kind(module_accessor);
|
let fighter_kind = utility::get_kind(module_accessor);
|
||||||
|
@ -191,14 +195,12 @@ pub unsafe fn get_command_flag_cat(module_accessor: &mut BattleObjectModuleAcces
|
||||||
|
|
||||||
|
|
||||||
// may need to move this to another func
|
// may need to move this to another func
|
||||||
if INPUT_RECORD == Record || INPUT_RECORD == Playback {
|
if (INPUT_RECORD == Record || INPUT_RECORD == Playback) && INPUT_RECORD_FRAME >= FINAL_RECORD_FRAME - 1 {
|
||||||
if INPUT_RECORD_FRAME >= FINAL_RECORD_FRAME - 1 {
|
INPUT_RECORD = None;
|
||||||
INPUT_RECORD = None;
|
POSSESSION = Player;
|
||||||
POSSESSION = Player;
|
INPUT_RECORD_FRAME = 0;
|
||||||
INPUT_RECORD_FRAME = 0;
|
if mash::is_playback_queued() {
|
||||||
if mash::is_playback_queued() {
|
mash::reset();
|
||||||
mash::reset();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -288,7 +290,7 @@ pub unsafe fn is_end_standby() -> bool {
|
||||||
let clamped_rstick_x = ((first_frame_input.rstick_x as f32) * STICK_CLAMP_MULTIPLIER).clamp(-1.0, 1.0);
|
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);
|
let clamped_rstick_y = ((first_frame_input.rstick_y as f32) * STICK_CLAMP_MULTIPLIER).clamp(-1.0, 1.0);
|
||||||
|
|
||||||
let buttons_pressed = first_frame_input.buttons != Buttons::NONE;
|
let buttons_pressed = first_frame_input.buttons.is_empty();
|
||||||
let lstick_movement = clamped_lstick_x.abs() >= STICK_NEUTRAL || clamped_lstick_y.abs() >= STICK_NEUTRAL;
|
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;
|
let rstick_movement = clamped_rstick_x.abs() >= STICK_NEUTRAL || clamped_rstick_y.abs() >= STICK_NEUTRAL;
|
||||||
lstick_movement || rstick_movement || buttons_pressed
|
lstick_movement || rstick_movement || buttons_pressed
|
||||||
|
@ -305,7 +307,7 @@ unsafe fn handle_final_input_mapping(
|
||||||
arg: bool
|
arg: bool
|
||||||
) {
|
) {
|
||||||
// go through the original mapping function first
|
// go through the original mapping function first
|
||||||
let _ret = original!()(mappings, player_idx, out, controller_struct, arg);
|
original!()(mappings, player_idx, out, controller_struct, arg);
|
||||||
if player_idx == 0 { // if player 1
|
if player_idx == 0 { // if player 1
|
||||||
if INPUT_RECORD == Record {
|
if INPUT_RECORD == Record {
|
||||||
// check for standby before starting action:
|
// check for standby before starting action:
|
||||||
|
@ -345,13 +347,13 @@ unsafe fn set_cpu_controls(p_data: *mut *mut u8) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if INPUT_RECORD == Pause {
|
if INPUT_RECORD == Pause {
|
||||||
if LOCKOUT_FRAME > 0 {
|
match LOCKOUT_FRAME.cmp(&0) {
|
||||||
LOCKOUT_FRAME -= 1;
|
Ordering::Greater => LOCKOUT_FRAME -= 1,
|
||||||
} else if LOCKOUT_FRAME == 0 {
|
Ordering::Equal => {
|
||||||
INPUT_RECORD = Record;
|
INPUT_RECORD = Record;
|
||||||
POSSESSION = Standby;
|
POSSESSION = Standby;
|
||||||
} else {
|
},
|
||||||
println!("LOCKOUT_FRAME OUT OF BOUNDS");
|
Ordering::Less => println!("LOCKOUT_FRAME OUT OF BOUNDS")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ impl ControlModuleInternal {
|
||||||
pub fn _clear(&mut self) { // Try to nullify controls so we can't control player 1 during recording
|
pub fn _clear(&mut self) { // Try to nullify controls so we can't control player 1 during recording
|
||||||
self.stick_x = 0.0;
|
self.stick_x = 0.0;
|
||||||
self.stick_y = 0.0;
|
self.stick_y = 0.0;
|
||||||
self.buttons = Buttons::NONE;
|
self.buttons = Buttons::empty();
|
||||||
self.clamped_lstick_x = 0.0;
|
self.clamped_lstick_x = 0.0;
|
||||||
self.clamped_lstick_y = 0.0;
|
self.clamped_lstick_y = 0.0;
|
||||||
self.clamped_rstick_x = 0.0;
|
self.clamped_rstick_x = 0.0;
|
||||||
|
@ -162,7 +162,6 @@ pub struct ControllerMapping {
|
||||||
//type Buttons = u32; // may need to actually implement (like label and such)? Not for now though
|
//type Buttons = u32; // may need to actually implement (like label and such)? Not for now though
|
||||||
bitflags! {
|
bitflags! {
|
||||||
pub struct Buttons: u32 {
|
pub struct Buttons: u32 {
|
||||||
const NONE = 0x0; // does adding this cause problems?
|
|
||||||
const ATTACK = 0x1;
|
const ATTACK = 0x1;
|
||||||
const SPECIAL = 0x2;
|
const SPECIAL = 0x2;
|
||||||
const JUMP = 0x4;
|
const JUMP = 0x4;
|
||||||
|
@ -251,7 +250,7 @@ pub struct MappedInputs {
|
||||||
impl MappedInputs { // pub needed?
|
impl MappedInputs { // pub needed?
|
||||||
pub fn default() -> MappedInputs {
|
pub fn default() -> MappedInputs {
|
||||||
MappedInputs {
|
MappedInputs {
|
||||||
buttons: Buttons::NONE,
|
buttons: Buttons::empty(),
|
||||||
lstick_x: 0,
|
lstick_x: 0,
|
||||||
lstick_y: 0,
|
lstick_y: 0,
|
||||||
rstick_x: 0,
|
rstick_x: 0,
|
||||||
|
|
|
@ -89,7 +89,7 @@ fn get_ledge_option() -> Option<Action> {
|
||||||
override_action = None;
|
override_action = None;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return override_action.or(regular_action);
|
override_action.or(regular_action)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -110,6 +110,9 @@ pub unsafe fn force_option(module_accessor: &mut app::BattleObjectModuleAccessor
|
||||||
let flag_cliff =
|
let flag_cliff =
|
||||||
WorkModule::is_flag(module_accessor, *FIGHTER_INSTANCE_WORK_ID_FLAG_CATCH_CLIFF);
|
WorkModule::is_flag(module_accessor, *FIGHTER_INSTANCE_WORK_ID_FLAG_CATCH_CLIFF);
|
||||||
let current_frame = MotionModule::frame(module_accessor) as i32;
|
let current_frame = MotionModule::frame(module_accessor) as i32;
|
||||||
|
// Allow this because sometimes we want to make sure our NNSDK doesn't have
|
||||||
|
// an erroneous definition
|
||||||
|
#[allow(clippy::unnecessary_cast)]
|
||||||
let status_kind = StatusModule::status_kind(module_accessor) as i32;
|
let status_kind = StatusModule::status_kind(module_accessor) as i32;
|
||||||
let should_buffer_playback = (LEDGE_DELAY == 0) && (current_frame == 13); // 18 - 5 of buffer
|
let should_buffer_playback = (LEDGE_DELAY == 0) && (current_frame == 13); // 18 - 5 of buffer
|
||||||
let should_buffer;
|
let should_buffer;
|
||||||
|
@ -159,9 +162,8 @@ pub unsafe fn force_option(module_accessor: &mut app::BattleObjectModuleAccessor
|
||||||
StatusModule::change_status_request_from_script(module_accessor, status, true);
|
StatusModule::change_status_request_from_script(module_accessor, status, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
let ledge_option: Option<Action> = get_ledge_option();
|
if let Some(ledge_option) = get_ledge_option() {
|
||||||
if ledge_option.is_some() {
|
mash::external_buffer_menu_mash(ledge_option);
|
||||||
mash::external_buffer_menu_mash(ledge_option.unwrap());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,8 +200,10 @@ pub fn get_command_flag_cat(module_accessor: &mut app::BattleObjectModuleAccesso
|
||||||
unsafe {
|
unsafe {
|
||||||
let current_frame = MotionModule::frame(module_accessor) as i32;
|
let current_frame = MotionModule::frame(module_accessor) as i32;
|
||||||
// Frame 18 is right before actionability for cliff catch
|
// Frame 18 is right before actionability for cliff catch
|
||||||
|
#[allow(clippy::unnecessary_cast)]
|
||||||
let just_grabbed_ledge = (StatusModule::status_kind(module_accessor) as i32 == *FIGHTER_STATUS_KIND_CLIFF_CATCH) && current_frame == 18;
|
let just_grabbed_ledge = (StatusModule::status_kind(module_accessor) as i32 == *FIGHTER_STATUS_KIND_CLIFF_CATCH) && current_frame == 18;
|
||||||
// Needs to be a frame earlier for lasso grabs
|
// Needs to be a frame earlier for lasso grabs
|
||||||
|
#[allow(clippy::unnecessary_cast)]
|
||||||
let just_lassoed_ledge = (StatusModule::status_kind(module_accessor) as i32 == *FIGHTER_STATUS_KIND_CLIFF_WAIT) && current_frame == 17;
|
let just_lassoed_ledge = (StatusModule::status_kind(module_accessor) as i32 == *FIGHTER_STATUS_KIND_CLIFF_WAIT) && current_frame == 17;
|
||||||
// Begin recording on ledge if this is the recording trigger
|
// Begin recording on ledge if this is the recording trigger
|
||||||
if (just_grabbed_ledge || just_lassoed_ledge) && MENU.record_trigger == RecordTrigger::Ledge && !input_record::is_standby() {
|
if (just_grabbed_ledge || just_lassoed_ledge) && MENU.record_trigger == RecordTrigger::Ledge && !input_record::is_standby() {
|
||||||
|
|
|
@ -377,7 +377,7 @@ unsafe fn perform_action(module_accessor: &mut app::BattleObjectModuleAccessor)
|
||||||
}
|
}
|
||||||
Action::PLAYBACK => {
|
Action::PLAYBACK => {
|
||||||
// Because these status changes take place after we would receive input from the controller, we need to queue input playback 1 frame before we can act
|
// Because these status changes take place after we would receive input from the controller, we need to queue input playback 1 frame before we can act
|
||||||
return 0; // We don't ever want to explicitly provide any command flags here; if we're trying to do input recording, the playback handles it all
|
0 // We don't ever want to explicitly provide any command flags here; if we're trying to do input recording, the playback handles it all
|
||||||
}
|
}
|
||||||
_ => get_attack_flag(module_accessor, action),
|
_ => get_attack_flag(module_accessor, action),
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ pub unsafe fn handle_change_status(
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe fn mod_handle_change_status(
|
unsafe fn mod_handle_change_status(
|
||||||
fighter: &mut L2CFighterBase,
|
fighter: &L2CFighterBase,
|
||||||
status_kind: &mut L2CValue,
|
status_kind: &mut L2CValue,
|
||||||
unk: &mut L2CValue,
|
unk: &mut L2CValue,
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -69,7 +69,7 @@ pub unsafe fn parse_anim_transform(anim_transform: &mut AnimTransform, layout_na
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub unsafe fn draw(root_pane: &mut Pane, layout_name: &str) {
|
pub unsafe fn draw(root_pane: &Pane, layout_name: &str) {
|
||||||
// Update percentage display as soon as possible on death
|
// Update percentage display as soon as possible on death
|
||||||
if is_training_mode() && is_ready_go() && layout_name == "info_melee" {
|
if is_training_mode() && is_ready_go() && layout_name == "info_melee" {
|
||||||
for player_name in &["p1", "p2"] {
|
for player_name in &["p1", "p2"] {
|
||||||
|
|
|
@ -21,7 +21,7 @@ macro_rules! display_txt_fmt {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
pub unsafe fn draw(root_pane: &mut Pane) {
|
pub unsafe fn draw(root_pane: &Pane) {
|
||||||
let notification_idx = 0;
|
let notification_idx = 0;
|
||||||
|
|
||||||
let queue = &mut ui::notifications::QUEUE;
|
let queue = &mut ui::notifications::QUEUE;
|
||||||
|
|
|
@ -71,7 +71,7 @@ lazy_static! {
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe fn render_submenu_page(app: &App, root_pane: &mut Pane) {
|
unsafe fn render_submenu_page(app: &App, root_pane: &Pane) {
|
||||||
let tab_selected = app.tab_selected();
|
let tab_selected = app.tab_selected();
|
||||||
let tab = app.menu_items.get(tab_selected).unwrap();
|
let tab = app.menu_items.get(tab_selected).unwrap();
|
||||||
let submenu_ids = app.submenu_ids();
|
let submenu_ids = app.submenu_ids();
|
||||||
|
@ -113,9 +113,8 @@ unsafe fn render_submenu_page(app: &App, root_pane: &mut Pane) {
|
||||||
// corresponds with a particular button to be visible.
|
// corresponds with a particular button to be visible.
|
||||||
submenu_ids.iter().for_each(|id| {
|
submenu_ids.iter().for_each(|id| {
|
||||||
let pane = menu_button.find_pane_by_name_recursive(id);
|
let pane = menu_button.find_pane_by_name_recursive(id);
|
||||||
match pane {
|
if let Some(p) = pane {
|
||||||
Some(p) => p.set_visible(id == &submenu.submenu_id),
|
p.set_visible(id == &submenu.submenu_id);
|
||||||
None => (),
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -156,7 +155,7 @@ unsafe fn render_submenu_page(app: &App, root_pane: &mut Pane) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe fn render_toggle_page(app: &App, root_pane: &mut Pane) {
|
unsafe fn render_toggle_page(app: &App, root_pane: &Pane) {
|
||||||
let (_title, _help_text, mut sub_menu_str_lists) = app.sub_menu_strs_and_states();
|
let (_title, _help_text, mut sub_menu_str_lists) = app.sub_menu_strs_and_states();
|
||||||
(0..sub_menu_str_lists.len()).for_each(|list_section| {
|
(0..sub_menu_str_lists.len()).for_each(|list_section| {
|
||||||
let sub_menu_str = sub_menu_str_lists[list_section].0.clone();
|
let sub_menu_str = sub_menu_str_lists[list_section].0.clone();
|
||||||
|
@ -194,9 +193,8 @@ unsafe fn render_toggle_page(app: &App, root_pane: &mut Pane) {
|
||||||
|
|
||||||
submenu_ids.iter().for_each(|id| {
|
submenu_ids.iter().for_each(|id| {
|
||||||
let pane = menu_button.find_pane_by_name_recursive(id);
|
let pane = menu_button.find_pane_by_name_recursive(id);
|
||||||
match pane {
|
if let Some(p) = pane {
|
||||||
Some(p) => p.set_visible(false),
|
p.set_visible(false);
|
||||||
None => (),
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -234,7 +232,7 @@ unsafe fn render_toggle_page(app: &App, root_pane: &mut Pane) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe fn render_slider_page(app: &App, root_pane: &mut Pane) {
|
unsafe fn render_slider_page(app: &App, root_pane: &Pane) {
|
||||||
let (title, _help_text, gauge_vals) = app.sub_menu_strs_for_slider();
|
let (title, _help_text, gauge_vals) = app.sub_menu_strs_for_slider();
|
||||||
let selected_min = gauge_vals.selected_min;
|
let selected_min = gauge_vals.selected_min;
|
||||||
let selected_max = gauge_vals.selected_max;
|
let selected_max = gauge_vals.selected_max;
|
||||||
|
@ -347,7 +345,7 @@ unsafe fn render_slider_page(app: &App, root_pane: &mut Pane) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
pub unsafe fn draw(root_pane: &mut Pane) {
|
pub unsafe fn draw(root_pane: &Pane) {
|
||||||
// Update menu display
|
// Update menu display
|
||||||
// Grabbing lock as read-only, essentially
|
// Grabbing lock as read-only, essentially
|
||||||
let app = &*crate::common::menu::QUICK_MENU_APP.data_ptr();
|
let app = &*crate::common::menu::QUICK_MENU_APP.data_ptr();
|
||||||
|
|
Loading…
Reference in a new issue