mirror of
https://github.com/jugeeya/UltimateTrainingModpack.git
synced 2025-03-22 14:26:11 +00:00
fix Save State bugs with Link, Richter
This commit is contained in:
parent
c46e1642d5
commit
a7da2c15bc
1 changed files with 59 additions and 48 deletions
|
@ -13,11 +13,34 @@ enum SaveState {
|
||||||
PosMove,
|
PosMove,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// struct SavedState {
|
||||||
|
// x: f32,
|
||||||
|
// y: f32,
|
||||||
|
// percent: f32,
|
||||||
|
// lr: f32,
|
||||||
|
// situation_kind: i32
|
||||||
|
// }
|
||||||
|
|
||||||
|
// impl Default for SavedState {
|
||||||
|
// fn default() -> Self {
|
||||||
|
// return SavedState {
|
||||||
|
// x: 0.0,
|
||||||
|
// y: 0.0,
|
||||||
|
// percent: 0.0,
|
||||||
|
// lr: 1.0,
|
||||||
|
// situation_kind: 0
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
use SaveState::*;
|
use SaveState::*;
|
||||||
|
|
||||||
static mut SAVE_STATE_PLAYER_STATE: SaveState = NoAction;
|
static mut SAVE_STATE_PLAYER_STATE: SaveState = NoAction;
|
||||||
static mut SAVE_STATE_CPU_STATE: SaveState = NoAction;
|
static mut SAVE_STATE_CPU_STATE: SaveState = NoAction;
|
||||||
|
|
||||||
|
// static mut SAVE_STATE_PLAYER: SavedState = SavedState::default();
|
||||||
|
// static mut SAVE_STATE_CPU: SavedState = SavedState::default();
|
||||||
|
|
||||||
static mut SAVE_STATE_X_PLAYER: f32 = 0.0;
|
static mut SAVE_STATE_X_PLAYER: f32 = 0.0;
|
||||||
static mut SAVE_STATE_Y_PLAYER: f32 = 0.0;
|
static mut SAVE_STATE_Y_PLAYER: f32 = 0.0;
|
||||||
static mut SAVE_STATE_PERCENT_PLAYER: f32 = 0.0;
|
static mut SAVE_STATE_PERCENT_PLAYER: f32 = 0.0;
|
||||||
|
@ -106,31 +129,19 @@ pub unsafe fn save_states(module_accessor: &mut app::BattleObjectModuleAccessor,
|
||||||
|
|
||||||
// move to camera bounds
|
// move to camera bounds
|
||||||
if *save_state == CameraMove {
|
if *save_state == CameraMove {
|
||||||
*save_state = PosMove;
|
if status == FIGHTER_STATUS_KIND_REBIRTH {
|
||||||
|
*save_state = PosMove;
|
||||||
|
} else {
|
||||||
|
if status != FIGHTER_STATUS_KIND_DEAD && status != FIGHTER_STATUS_KIND_STANDBY {
|
||||||
|
StatusModule::change_status_request(module_accessor, *FIGHTER_STATUS_KIND_DEAD, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let left_right = (PostureModule::pos_x(module_accessor) > 0.0) as i32 as f32
|
|
||||||
- (PostureModule::pos_x(module_accessor) < 0.0) as i32 as f32;
|
|
||||||
let y_pos = 20.0;
|
|
||||||
|
|
||||||
let pos = Vector3f {
|
|
||||||
x: left_right * 50.0,
|
|
||||||
y: y_pos,
|
|
||||||
z: 0.0,
|
|
||||||
};
|
|
||||||
PostureModule::set_pos(module_accessor, &pos);
|
|
||||||
|
|
||||||
StatusModule::change_status_request(module_accessor, *FIGHTER_STATUS_KIND_DEAD, false);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// move to correct pos
|
// move to correct pos
|
||||||
if *save_state == PosMove {
|
if *save_state == PosMove {
|
||||||
let mgr = *(FIGHTER_MANAGER_ADDR as *mut *mut app::FighterManager);
|
|
||||||
FighterManager::reset_fighter(mgr, false);
|
|
||||||
if StatusModule::prev_status_kind(module_accessor, 0) != FIGHTER_STATUS_KIND_REBIRTH {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
KineticModule::clear_speed_all(module_accessor);
|
KineticModule::clear_speed_all(module_accessor);
|
||||||
|
|
||||||
let pos = Vector3f {
|
let pos = Vector3f {
|
||||||
|
@ -147,36 +158,36 @@ pub unsafe fn save_states(module_accessor: &mut app::BattleObjectModuleAccessor,
|
||||||
);
|
);
|
||||||
DamageModule::add_damage(module_accessor, *save_state_percent, 0);
|
DamageModule::add_damage(module_accessor, *save_state_percent, 0);
|
||||||
|
|
||||||
StatusModule::set_situation_kind(
|
if *save_state_situation_kind == SITUATION_KIND_GROUND {
|
||||||
module_accessor,
|
if status != FIGHTER_STATUS_KIND_WAIT {
|
||||||
app::SituationKind {
|
StatusModule::change_status_request(
|
||||||
situation_kind: *save_state_situation_kind,
|
module_accessor,
|
||||||
},
|
*FIGHTER_STATUS_KIND_WAIT,
|
||||||
false,
|
false,
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
if *save_state_situation_kind == SITUATION_KIND_GROUND && status != FIGHTER_STATUS_KIND_WAIT
|
*save_state = NoAction;
|
||||||
{
|
}
|
||||||
StatusModule::change_status_request(
|
} else if *save_state_situation_kind == SITUATION_KIND_AIR {
|
||||||
module_accessor,
|
if status != FIGHTER_STATUS_KIND_FALL {
|
||||||
*FIGHTER_STATUS_KIND_CLIFF_WAIT,
|
StatusModule::change_status_request(module_accessor, *FIGHTER_STATUS_KIND_FALL, false);
|
||||||
false,
|
} else {
|
||||||
);
|
*save_state = NoAction;
|
||||||
} else if *save_state_situation_kind == SITUATION_KIND_AIR
|
}
|
||||||
&& status != FIGHTER_STATUS_KIND_FALL
|
} else if *save_state_situation_kind == SITUATION_KIND_CLIFF {
|
||||||
{
|
if status != FIGHTER_STATUS_KIND_CLIFF_CATCH_MOVE && status != FIGHTER_STATUS_KIND_CLIFF_CATCH {
|
||||||
StatusModule::change_status_request(module_accessor, *FIGHTER_STATUS_KIND_FALL, false);
|
StatusModule::change_status_request(
|
||||||
} else if *save_state_situation_kind == SITUATION_KIND_CLIFF
|
module_accessor,
|
||||||
&& status != FIGHTER_STATUS_KIND_CLIFF_CATCH_MOVE
|
*FIGHTER_STATUS_KIND_CLIFF_CATCH_MOVE,
|
||||||
&& status != FIGHTER_STATUS_KIND_CLIFF_CATCH
|
false,
|
||||||
{
|
);
|
||||||
StatusModule::change_status_request(
|
} else {
|
||||||
module_accessor,
|
*save_state = NoAction;
|
||||||
*FIGHTER_STATUS_KIND_CLIFF_CATCH_MOVE,
|
}
|
||||||
false,
|
} else {
|
||||||
);
|
*save_state = NoAction;
|
||||||
}
|
}
|
||||||
*save_state = NoAction;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue