mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-08-12 04:07:43 -04:00
Savestates, player serialization (#6927)
This commit is contained in:
@@ -50,6 +50,7 @@ extern "C" void EnZf_SaveState(SaveStateCtx* ctx);
|
||||
extern "C" void EnZl3_SaveState(SaveStateCtx* ctx);
|
||||
extern "C" void ObjectKankyo_SaveState(SaveStateCtx* ctx);
|
||||
extern "C" void EnHeishi1_SaveState(SaveStateCtx* ctx);
|
||||
extern "C" void Player_SaveState(SaveStateCtx* ctx);
|
||||
|
||||
extern "C" void Matrix_SaveState(SaveStateCtx* ctx);
|
||||
extern "C" void Lights_SaveState(SaveStateCtx* ctx);
|
||||
@@ -147,6 +148,7 @@ typedef struct SaveStateInfo {
|
||||
std::unique_ptr<uint8_t[]> enZl3State;
|
||||
std::unique_ptr<uint8_t[]> objectKankyoState;
|
||||
std::unique_ptr<uint8_t[]> enHeishi1State;
|
||||
std::unique_ptr<uint8_t[]> playerState;
|
||||
|
||||
u8 transitionActorCount_copy;
|
||||
s16 transitionActorIds_copy[256];
|
||||
@@ -281,6 +283,7 @@ void SaveState::SaveOverlayStaticData(void) {
|
||||
SaveOverlayState(info->enZl3State, EnZl3_SaveState);
|
||||
SaveOverlayState(info->objectKankyoState, ObjectKankyo_SaveState);
|
||||
SaveOverlayState(info->enHeishi1State, EnHeishi1_SaveState);
|
||||
SaveOverlayState(info->playerState, Player_SaveState);
|
||||
}
|
||||
|
||||
void SaveState::LoadOverlayStaticData(void) {
|
||||
@@ -326,6 +329,7 @@ void SaveState::LoadOverlayStaticData(void) {
|
||||
LoadOverlayState(info->enZl3State, EnZl3_SaveState);
|
||||
LoadOverlayState(info->objectKankyoState, ObjectKankyo_SaveState);
|
||||
LoadOverlayState(info->enHeishi1State, EnHeishi1_SaveState);
|
||||
LoadOverlayState(info->playerState, Player_SaveState);
|
||||
}
|
||||
|
||||
void SaveState::SaveTransitionActors(void) {
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "soh/frame_interpolation.h"
|
||||
#include "soh/OTRGlobals.h"
|
||||
#include "soh/ResourceManagerHelpers.h"
|
||||
#include "soh/Enhancements/savestate_serialize.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
@@ -16603,3 +16604,30 @@ void Player_StartTalking(PlayState* play, Actor* actor) {
|
||||
Player_SetTurnAroundCamera(play, CAM_ITEM_TYPE_11);
|
||||
}
|
||||
}
|
||||
|
||||
#define PLAYER_SHIP_SAVESTATE_FIELDS(F) \
|
||||
F(D_80858AA0) \
|
||||
F(sSavedCurrentMask) \
|
||||
F(sInteractWallCheckResult) \
|
||||
F(sControlInput) \
|
||||
F(sNoclipEnabled) \
|
||||
F(sControlStickMagnitude) \
|
||||
F(sControlStickAngle) \
|
||||
F(sControlStickWorldYaw) \
|
||||
F(sUpperBodyIsBusy) \
|
||||
F(sFloorType) \
|
||||
F(sWaterSpeedFactor) \
|
||||
F(sInvWaterSpeedFactor) \
|
||||
F(sTouchedWallFlags) \
|
||||
F(sConveyorSpeed) \
|
||||
F(sIsFloorConveyor) \
|
||||
F(sConveyorYaw) \
|
||||
F(sYDistToFloor) \
|
||||
F(sPrevFloorProperty) \
|
||||
F(sShapeYawToTouchedWall) \
|
||||
F(sWorldYawToTouchedWall) \
|
||||
F(sFloorShapePitch) \
|
||||
F(sUseHeldItem) \
|
||||
F(sHeldItemButtonIsHeldDown)
|
||||
|
||||
SHIP_SAVESTATE_DEFINE(Player, PLAYER_SHIP_SAVESTATE_FIELDS)
|
||||
|
||||
Reference in New Issue
Block a user