1
0
Fork 0
mirror of https://github.com/jugeeya/UltimateTrainingModpack.git synced 2025-01-31 22:47:25 +00:00

Move mash_state from set of constants to an enum

This commit is contained in:
jam1garner 2020-05-16 01:26:12 -04:00
parent 4342f626f8
commit f86415830d
5 changed files with 44 additions and 23 deletions

View file

@ -14,6 +14,7 @@ pub const NONE: i32 = 0;
pub const DI_RANDOM_IN_AWAY: i32 = 9; pub const DI_RANDOM_IN_AWAY: i32 = 9;
// const std::vector<std::string> di_items{"None", "Out", "Up Out", "Up", "Up In", "In", "Down In", "Down", "Down Out", "Random"}; // const std::vector<std::string> di_items{"None", "Out", "Up Out", "Up", "Up In", "In", "Down In", "Down", "Down Out", "Random"};
/// Mash Attack States
#[repr(i32)] #[repr(i32)]
#[derive(PartialEq, Debug, Copy, Clone)] #[derive(PartialEq, Debug, Copy, Clone)]
pub enum Attack { pub enum Attack {
@ -46,7 +47,7 @@ impl From<i32> for Attack {
8 => DownB, 8 => DownB,
9 => UpSmash, 9 => UpSmash,
10 => Grab, 10 => Grab,
_ => panic!("Invalid mash state {}", x) _ => panic!("Invalid mash attack state {}", x)
} }
} }
} }
@ -86,12 +87,32 @@ pub const TECH_ROLL: i32 = 3;
pub const TECH_MISS: i32 = 4; pub const TECH_MISS: i32 = 4;
// pub const std::vector<std::string> tech_items{"None", "Random", "In-Place", "Roll", "Miss Tech"}; // pub const std::vector<std::string> tech_items{"None", "Random", "In-Place", "Roll", "Miss Tech"};
// Mash States /// Mash States
pub const MASH_AIRDODGE: i32 = 1; #[repr(i32)]
pub const MASH_JUMP: i32 = 2; #[derive(Debug, Clone, Copy, PartialEq)]
pub const MASH_ATTACK: i32 = 3; pub enum Mash {
pub const MASH_SPOTDODGE: i32 = 4; None = 0,
pub const MASH_RANDOM: i32 = 5; Airdodge = 1,
Jump = 2,
Attack = 3,
Spotdodge = 4,
Random = 5
}
impl From<i32> for Mash {
fn from(x: i32) -> Self {
match x {
0 => Mash::None,
1 => Mash::Airdodge,
2 => Mash::Jump,
3 => Mash::Attack,
4 => Mash::Spotdodge,
5 => Mash::Random,
_ => panic!("Invalid mash state {}", x)
}
}
}
// pub const std::vector<std::string> mash_items{"None", "Airdodge", "Jump", "Attack", "Spotdodge", "Random"}; // pub const std::vector<std::string> mash_items{"None", "Airdodge", "Jump", "Attack", "Spotdodge", "Random"};
// Shield States // Shield States
@ -114,7 +135,7 @@ pub struct TrainingModpackMenu {
pub mash_attack_state: Attack, pub mash_attack_state: Attack,
pub ledge_state: i32, pub ledge_state: i32,
pub tech_state: i32, pub tech_state: i32,
pub mash_state: i32, pub mash_state: Mash,
pub shield_state: i32, pub shield_state: i32,
pub defensive_state: i32, pub defensive_state: i32,
} }

View file

@ -11,7 +11,7 @@ pub static mut MENU_STRUCT: consts::TrainingModpackMenu = consts::TrainingModpac
mash_attack_state: Attack::Nair, mash_attack_state: Attack::Nair,
ledge_state: RANDOM_LEDGE, ledge_state: RANDOM_LEDGE,
tech_state: RANDOM_TECH, tech_state: RANDOM_TECH,
mash_state: NONE, mash_state: Mash::None,
shield_state: NONE, shield_state: NONE,
defensive_state: RANDOM_DEFENSIVE, defensive_state: RANDOM_DEFENSIVE,
}; };

View file

@ -22,7 +22,7 @@ use smash::lua2cpp::L2CFighterCommon;
pub unsafe fn handle_sub_guard_cont(fighter: &mut L2CFighterCommon) -> L2CValue { pub unsafe fn handle_sub_guard_cont(fighter: &mut L2CFighterCommon) -> L2CValue {
let module_accessor = sv_system::battle_object_module_accessor(fighter.lua_state_agent); let module_accessor = sv_system::battle_object_module_accessor(fighter.lua_state_agent);
if is_training_mode() && is_operation_cpu(module_accessor) { if is_training_mode() && is_operation_cpu(module_accessor) {
if MENU.mash_state == MASH_ATTACK && MENU.mash_attack_state == Attack::Grab { if MENU.mash_state == Mash::Attack && MENU.mash_attack_state == Attack::Grab {
if StatusModule::prev_status_kind(module_accessor, 0) == FIGHTER_STATUS_KIND_GUARD_DAMAGE { if StatusModule::prev_status_kind(module_accessor, 0) == FIGHTER_STATUS_KIND_GUARD_DAMAGE {
if WorkModule::get_int( if WorkModule::get_int(
module_accessor, module_accessor,
@ -41,7 +41,7 @@ pub unsafe fn handle_sub_guard_cont(fighter: &mut L2CFighterCommon) -> L2CValue
} }
} }
} }
if MENU.mash_state == MASH_SPOTDODGE { if MENU.mash_state == Mash::Spotdodge {
if StatusModule::prev_status_kind(module_accessor, 0) == FIGHTER_STATUS_KIND_GUARD_DAMAGE { if StatusModule::prev_status_kind(module_accessor, 0) == FIGHTER_STATUS_KIND_GUARD_DAMAGE {
if WorkModule::is_enable_transition_term( if WorkModule::is_enable_transition_term(
module_accessor, module_accessor,
@ -55,7 +55,7 @@ pub unsafe fn handle_sub_guard_cont(fighter: &mut L2CFighterCommon) -> L2CValue
} }
} }
if MENU.mash_state == MASH_ATTACK { if MENU.mash_state == Mash::Attack {
if MENU.mash_attack_state == Attack::UpB { if MENU.mash_attack_state == Attack::UpB {
if StatusModule::prev_status_kind(module_accessor, 0) == FIGHTER_STATUS_KIND_GUARD_DAMAGE { if StatusModule::prev_status_kind(module_accessor, 0) == FIGHTER_STATUS_KIND_GUARD_DAMAGE {
// if WorkModule::is_enable_transition_term( // if WorkModule::is_enable_transition_term(

View file

@ -8,9 +8,9 @@ pub unsafe fn get_attack_air_kind(
module_accessor: &mut app::BattleObjectModuleAccessor, module_accessor: &mut app::BattleObjectModuleAccessor,
) -> Option<i32> { ) -> Option<i32> {
if is_training_mode() && is_operation_cpu(module_accessor) { if is_training_mode() && is_operation_cpu(module_accessor) {
if MENU.mash_state == MASH_ATTACK { if MENU.mash_state == Mash::Attack {
MENU.mash_attack_state.into_attack_air_kind() MENU.mash_attack_state.into_attack_air_kind()
} else if MENU.mash_state == MASH_RANDOM { } else if MENU.mash_state == Mash::Random {
Some(app::sv_math::rand(hash40("fighter"), 5) + 1) Some(app::sv_math::rand(hash40("fighter"), 5) + 1)
} else { } else {
None None
@ -31,23 +31,23 @@ pub unsafe fn get_command_flag_cat(
|| is_in_shieldstun(module_accessor) || is_in_shieldstun(module_accessor)
{ {
match MENU.mash_state { match MENU.mash_state {
MASH_AIRDODGE => { Mash::Airdodge => {
if category == FIGHTER_PAD_COMMAND_CATEGORY1 { if category == FIGHTER_PAD_COMMAND_CATEGORY1 {
*flag |= *FIGHTER_PAD_CMD_CAT1_FLAG_AIR_ESCAPE; *flag |= *FIGHTER_PAD_CMD_CAT1_FLAG_AIR_ESCAPE;
} }
} }
MASH_JUMP => { Mash::Jump => {
if !is_in_landing(module_accessor) && category == FIGHTER_PAD_COMMAND_CATEGORY1 if !is_in_landing(module_accessor) && category == FIGHTER_PAD_COMMAND_CATEGORY1
{ {
*flag |= *FIGHTER_PAD_CMD_CAT1_FLAG_JUMP_BUTTON; *flag |= *FIGHTER_PAD_CMD_CAT1_FLAG_JUMP_BUTTON;
} }
} }
MASH_SPOTDODGE => { Mash::Spotdodge => {
if category == FIGHTER_PAD_COMMAND_CATEGORY1 { if category == FIGHTER_PAD_COMMAND_CATEGORY1 {
*flag |= *FIGHTER_PAD_CMD_CAT1_FLAG_ESCAPE; *flag |= *FIGHTER_PAD_CMD_CAT1_FLAG_ESCAPE;
} }
} }
MASH_ATTACK => { Mash::Attack => {
if category == FIGHTER_PAD_COMMAND_CATEGORY1 { if category == FIGHTER_PAD_COMMAND_CATEGORY1 {
use Attack::*; use Attack::*;
@ -68,7 +68,7 @@ pub unsafe fn get_command_flag_cat(
} }
} }
} }
MASH_RANDOM => { Mash::Random => {
if category == FIGHTER_PAD_COMMAND_CATEGORY1 { if category == FIGHTER_PAD_COMMAND_CATEGORY1 {
let situation_kind = StatusModule::situation_kind(module_accessor) as i32; let situation_kind = StatusModule::situation_kind(module_accessor) as i32;
@ -133,7 +133,7 @@ pub unsafe fn check_button_on(
) -> Option<bool> { ) -> Option<bool> {
if [*CONTROL_PAD_BUTTON_GUARD_HOLD, *CONTROL_PAD_BUTTON_GUARD].contains(&button) { if [*CONTROL_PAD_BUTTON_GUARD_HOLD, *CONTROL_PAD_BUTTON_GUARD].contains(&button) {
if is_training_mode() && is_operation_cpu(module_accessor) { if is_training_mode() && is_operation_cpu(module_accessor) {
if MENU.mash_state == MASH_AIRDODGE if MENU.mash_state == Mash::Airdodge
&& (is_in_hitstun(module_accessor) || is_in_landing(module_accessor)) && (is_in_hitstun(module_accessor) || is_in_landing(module_accessor))
{ {
return Some(true); return Some(true);

View file

@ -33,7 +33,7 @@ pub unsafe fn should_hold_shield(module_accessor: &mut app::BattleObjectModuleAc
// We should hold shield if the state requires it // We should hold shield if the state requires it
if [SHIELD_HOLD, SHIELD_INFINITE].contains(&MENU.shield_state) { if [SHIELD_HOLD, SHIELD_INFINITE].contains(&MENU.shield_state) {
// If we are not mashing then we will always hold shield // If we are not mashing then we will always hold shield
if MENU.mash_state == NONE { if MENU.mash_state == Mash::None {
return true; return true;
} }
@ -42,7 +42,7 @@ pub unsafe fn should_hold_shield(module_accessor: &mut app::BattleObjectModuleAc
} }
// We will only drop shield if we are in shieldstun and our attack can be performed OOS // We will only drop shield if we are in shieldstun and our attack can be performed OOS
if MENU.mash_state == MASH_ATTACK { if MENU.mash_state == Mash::Attack {
if [Attack::NeutralB, Attack::SideB, Attack::DownB].contains(&MENU.mash_attack_state) { if [Attack::NeutralB, Attack::SideB, Attack::DownB].contains(&MENU.mash_attack_state) {
return false; return false;
} }
@ -52,7 +52,7 @@ pub unsafe fn should_hold_shield(module_accessor: &mut app::BattleObjectModuleAc
} }
} }
if MENU.mash_state == MASH_SPOTDODGE { if MENU.mash_state == Mash::Spotdodge {
return true; return true;
} }
} }