mirror of
https://github.com/jugeeya/UltimateTrainingModpack.git
synced 2024-11-27 20:34:03 +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 {
|
||||
pub fn to_str(&self) -> String {
|
||||
use std::fmt::Write;
|
||||
self.data
|
||||
.iter()
|
||||
.map(|i| format!("{i:02x}"))
|
||||
.collect::<String>()
|
||||
.fold(String::new(), |mut output, b| {
|
||||
let _ = write!(output, "{b:02x}");
|
||||
output
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ pub fn is_training_mode() -> bool {
|
|||
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
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ fn update_frame_advantage(new_frame_adv: i32) {
|
|||
b: 8,
|
||||
a: 255,
|
||||
},
|
||||
x if x == 0 => ResColor {
|
||||
0 => ResColor {
|
||||
r: 0,
|
||||
g: 0,
|
||||
b: 0,
|
||||
|
|
|
@ -45,7 +45,7 @@ pub unsafe fn handle_correct_damage_vector_common(
|
|||
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() {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ use smash::app::{BattleObjectModuleAccessor, lua_bind::*, utility};
|
|||
use smash::lib::lua_const::*;
|
||||
use lazy_static::lazy_static;
|
||||
use parking_lot::Mutex;
|
||||
use std::cmp::Ordering;
|
||||
use crate::training::input_recording::structures::*;
|
||||
use crate::common::consts::{RecordTrigger, HitstunPlayback, FighterId};
|
||||
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) {
|
||||
// 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 =
|
||||
WorkModule::get_int(module_accessor, *FIGHTER_INSTANCE_WORK_ID_INT_ENTRY_ID) as i32;
|
||||
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
|
||||
if INPUT_RECORD == Record || INPUT_RECORD == Playback {
|
||||
if INPUT_RECORD_FRAME >= FINAL_RECORD_FRAME - 1 {
|
||||
INPUT_RECORD = None;
|
||||
POSSESSION = Player;
|
||||
INPUT_RECORD_FRAME = 0;
|
||||
if mash::is_playback_queued() {
|
||||
mash::reset();
|
||||
}
|
||||
if (INPUT_RECORD == Record || INPUT_RECORD == Playback) && INPUT_RECORD_FRAME >= FINAL_RECORD_FRAME - 1 {
|
||||
INPUT_RECORD = None;
|
||||
POSSESSION = Player;
|
||||
INPUT_RECORD_FRAME = 0;
|
||||
if mash::is_playback_queued() {
|
||||
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_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 rstick_movement = clamped_rstick_x.abs() >= STICK_NEUTRAL || clamped_rstick_y.abs() >= STICK_NEUTRAL;
|
||||
lstick_movement || rstick_movement || buttons_pressed
|
||||
|
@ -305,7 +307,7 @@ unsafe fn handle_final_input_mapping(
|
|||
arg: bool
|
||||
) {
|
||||
// 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 INPUT_RECORD == Record {
|
||||
// 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 LOCKOUT_FRAME > 0 {
|
||||
LOCKOUT_FRAME -= 1;
|
||||
} else if LOCKOUT_FRAME == 0 {
|
||||
INPUT_RECORD = Record;
|
||||
POSSESSION = Standby;
|
||||
} else {
|
||||
println!("LOCKOUT_FRAME OUT OF BOUNDS");
|
||||
match LOCKOUT_FRAME.cmp(&0) {
|
||||
Ordering::Greater => LOCKOUT_FRAME -= 1,
|
||||
Ordering::Equal => {
|
||||
INPUT_RECORD = Record;
|
||||
POSSESSION = Standby;
|
||||
},
|
||||
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
|
||||
self.stick_x = 0.0;
|
||||
self.stick_y = 0.0;
|
||||
self.buttons = Buttons::NONE;
|
||||
self.buttons = Buttons::empty();
|
||||
self.clamped_lstick_x = 0.0;
|
||||
self.clamped_lstick_y = 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
|
||||
bitflags! {
|
||||
pub struct Buttons: u32 {
|
||||
const NONE = 0x0; // does adding this cause problems?
|
||||
const ATTACK = 0x1;
|
||||
const SPECIAL = 0x2;
|
||||
const JUMP = 0x4;
|
||||
|
@ -251,7 +250,7 @@ pub struct MappedInputs {
|
|||
impl MappedInputs { // pub needed?
|
||||
pub fn default() -> MappedInputs {
|
||||
MappedInputs {
|
||||
buttons: Buttons::NONE,
|
||||
buttons: Buttons::empty(),
|
||||
lstick_x: 0,
|
||||
lstick_y: 0,
|
||||
rstick_x: 0,
|
||||
|
|
|
@ -89,7 +89,7 @@ fn get_ledge_option() -> Option<Action> {
|
|||
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 =
|
||||
WorkModule::is_flag(module_accessor, *FIGHTER_INSTANCE_WORK_ID_FLAG_CATCH_CLIFF);
|
||||
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 should_buffer_playback = (LEDGE_DELAY == 0) && (current_frame == 13); // 18 - 5 of 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);
|
||||
}
|
||||
|
||||
let ledge_option: Option<Action> = get_ledge_option();
|
||||
if ledge_option.is_some() {
|
||||
mash::external_buffer_menu_mash(ledge_option.unwrap());
|
||||
if let Some(ledge_option) = get_ledge_option() {
|
||||
mash::external_buffer_menu_mash(ledge_option);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -198,8 +200,10 @@ pub fn get_command_flag_cat(module_accessor: &mut app::BattleObjectModuleAccesso
|
|||
unsafe {
|
||||
let current_frame = MotionModule::frame(module_accessor) as i32;
|
||||
// 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;
|
||||
// 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;
|
||||
// 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() {
|
||||
|
|
|
@ -377,7 +377,7 @@ unsafe fn perform_action(module_accessor: &mut app::BattleObjectModuleAccessor)
|
|||
}
|
||||
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
|
||||
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),
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ pub unsafe fn handle_change_status(
|
|||
}
|
||||
|
||||
unsafe fn mod_handle_change_status(
|
||||
fighter: &mut L2CFighterBase,
|
||||
fighter: &L2CFighterBase,
|
||||
status_kind: &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
|
||||
if is_training_mode() && is_ready_go() && layout_name == "info_melee" {
|
||||
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 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 = app.menu_items.get(tab_selected).unwrap();
|
||||
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.
|
||||
submenu_ids.iter().for_each(|id| {
|
||||
let pane = menu_button.find_pane_by_name_recursive(id);
|
||||
match pane {
|
||||
Some(p) => p.set_visible(id == &submenu.submenu_id),
|
||||
None => (),
|
||||
if let Some(p) = pane {
|
||||
p.set_visible(id == &submenu.submenu_id);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -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();
|
||||
(0..sub_menu_str_lists.len()).for_each(|list_section| {
|
||||
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| {
|
||||
let pane = menu_button.find_pane_by_name_recursive(id);
|
||||
match pane {
|
||||
Some(p) => p.set_visible(false),
|
||||
None => (),
|
||||
if let Some(p) = pane {
|
||||
p.set_visible(false);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -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 selected_min = gauge_vals.selected_min;
|
||||
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
|
||||
// Grabbing lock as read-only, essentially
|
||||
let app = &*crate::common::menu::QUICK_MENU_APP.data_ptr();
|
||||
|
|
Loading…
Reference in a new issue