1
0
Fork 0
mirror of https://github.com/jugeeya/UltimateTrainingModpack.git synced 2025-03-22 14:26:11 +00:00

Add Save State Damage Toggle (#176)

Added toggle to not overwrite the damage when loading a save state
This commit is contained in:
sidschingis 2020-11-20 18:48:14 +01:00 committed by GitHub
parent 950407553f
commit ebc046db1d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 37 additions and 13 deletions

View file

@ -347,3 +347,6 @@ DEFINE_ENUM_CLASS(AttackAngleFlag);
const std::string attack_angle_help = R""""( const std::string attack_angle_help = R""""(
Set angleable tilt and smash attacks.)""""; Set angleable tilt and smash attacks.)"""";
const std::string save_damage_help = R""""(
Set if save states should apply to damage.)"""";

View file

@ -34,6 +34,7 @@ static struct TrainingModpackMenu
DelayFlags AERIAL_DELAY = DelayFlags::None; DelayFlags AERIAL_DELAY = DelayFlags::None;
BoolFlags FULL_HOP = BoolFlags::None; BoolFlags FULL_HOP = BoolFlags::None;
int INPUT_DELAY = 0; int INPUT_DELAY = 0;
OnOffFlags SAVE_DAMAGE = OnOffFlag::On;
} menu; } menu;
static struct TrainingModpackMenu defaultMenu = menu; static struct TrainingModpackMenu defaultMenu = menu;
@ -401,6 +402,9 @@ tsl::elm::Element* GuiMain::createUI()
saveStateItem->setHelpListener([](std::string title, std::string help) { tsl::changeTo<GuiHelp>(title, help); }); saveStateItem->setHelpListener([](std::string title, std::string help) { tsl::changeTo<GuiHelp>(title, help); });
list->addItem(saveStateItem); list->addItem(saveStateItem);
list->addItem(new BitFlagToggleListItem<OnOffFlags::Type>(
"Save Damage", OnOffFlag::On, &menu.SAVE_DAMAGE, "Save Damage", save_damage_help));
ValueListItem* inputDelayItem = ValueListItem* inputDelayItem =
new ValueListItem("Input Delay", input_delay_items, &menu.INPUT_DELAY, "inputDelay", input_delay_help); new ValueListItem("Input Delay", input_delay_items, &menu.INPUT_DELAY, "inputDelay", input_delay_help);
list->addItem(inputDelayItem); list->addItem(inputDelayItem);

View file

@ -337,6 +337,7 @@ pub struct TrainingModpackMenu {
pub aerial_delay: Delay, pub aerial_delay: Delay,
pub full_hop: BoolFlag, pub full_hop: BoolFlag,
pub input_delay: i32, pub input_delay: i32,
pub save_damage: OnOff,
} }
// Fighter Ids // Fighter Ids

View file

@ -30,6 +30,7 @@ pub static mut MENU_STRUCT: consts::TrainingModpackMenu = consts::TrainingModpac
aerial_delay: Delay::empty(), aerial_delay: Delay::empty(),
full_hop: BoolFlag::empty(), full_hop: BoolFlag::empty(),
input_delay: 0, input_delay: 0,
save_damage: OnOff::On,
}; };
pub static mut MENU: &consts::TrainingModpackMenu = unsafe { &mut MENU_STRUCT }; pub static mut MENU: &consts::TrainingModpackMenu = unsafe { &mut MENU_STRUCT };

View file

@ -1,4 +1,6 @@
use crate::common::consts::FighterId; use crate::common::consts::FighterId;
use crate::common::consts::OnOff;
use crate::common::MENU;
use crate::training::reset; use crate::training::reset;
use smash::app::{self, lua_bind::*}; use smash::app::{self, lua_bind::*};
use smash::hash40; use smash::hash40;
@ -66,10 +68,32 @@ pub unsafe fn get_param_int(
None None
} }
fn set_damage(module_accessor: &mut app::BattleObjectModuleAccessor, damage : f32) {
let overwrite_damage;
unsafe {
overwrite_damage = MENU.save_damage == OnOff::On;
}
if !overwrite_damage {
return;
}
unsafe {
DamageModule::heal(
module_accessor,
-1.0 * DamageModule::damage(module_accessor, 0),
0,
);
DamageModule::add_damage(module_accessor, damage, 0);
}
}
pub unsafe fn save_states(module_accessor: &mut app::BattleObjectModuleAccessor) { pub unsafe fn save_states(module_accessor: &mut app::BattleObjectModuleAccessor) {
let status = StatusModule::status_kind(module_accessor) as i32; let status = StatusModule::status_kind(module_accessor) as i32;
let save_state = if WorkModule::get_int(module_accessor, *FIGHTER_INSTANCE_WORK_ID_INT_ENTRY_ID) let save_state = if WorkModule::get_int(module_accessor, *FIGHTER_INSTANCE_WORK_ID_INT_ENTRY_ID)
== FighterId::CPU as i32 { == FighterId::CPU as i32
{
&mut SAVE_STATE_CPU &mut SAVE_STATE_CPU
} else { } else {
&mut SAVE_STATE_PLAYER &mut SAVE_STATE_PLAYER
@ -107,11 +131,7 @@ pub unsafe fn save_states(module_accessor: &mut app::BattleObjectModuleAccessor)
ControlModule::stop_rumble(module_accessor, true); ControlModule::stop_rumble(module_accessor, true);
SoundModule::stop_all_sound(module_accessor); SoundModule::stop_all_sound(module_accessor);
StatusModule::change_status_request( StatusModule::change_status_request(module_accessor, *FIGHTER_STATUS_KIND_DEAD, false);
module_accessor,
*FIGHTER_STATUS_KIND_DEAD,
false,
);
} }
return; return;
@ -171,12 +191,7 @@ pub unsafe fn save_states(module_accessor: &mut app::BattleObjectModuleAccessor)
// if we're done moving, reset percent // if we're done moving, reset percent
if save_state.state == NoAction { if save_state.state == NoAction {
DamageModule::heal( set_damage(module_accessor, save_state.percent);
module_accessor,
-1.0 * DamageModule::damage(module_accessor, 0),
0,
);
DamageModule::add_damage(module_accessor, save_state.percent, 0);
} }
return; return;