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:
parent
4342f626f8
commit
f86415830d
5 changed files with 44 additions and 23 deletions
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
|
@ -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,
|
||||||
};
|
};
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue