Qt: Unify state saving/loading flags

This commit is contained in:
Jeffrey Pfau 2016-01-24 18:25:07 -08:00
parent 0501944b5a
commit 6d8a34a6dc
3 changed files with 9 additions and 4 deletions

View File

@ -31,6 +31,7 @@ CheatsView::CheatsView(GameController* controller, QWidget* parent)
connect(m_ui.addSet, SIGNAL(clicked()), this, SLOT(addSet())); connect(m_ui.addSet, SIGNAL(clicked()), this, SLOT(addSet()));
connect(m_ui.remove, SIGNAL(clicked()), this, SLOT(removeSet())); connect(m_ui.remove, SIGNAL(clicked()), this, SLOT(removeSet()));
connect(controller, SIGNAL(gameStopped(GBAThread*)), &m_model, SLOT(invalidated())); connect(controller, SIGNAL(gameStopped(GBAThread*)), &m_model, SLOT(invalidated()));
connect(controller, SIGNAL(stateLoaded(GBAThread*)), &m_model, SLOT(invalidated()));
connect(m_ui.add, &QPushButton::clicked, [this]() { connect(m_ui.add, &QPushButton::clicked, [this]() {
enterCheat(GBACheatAddLine); enterCheat(GBACheatAddLine);

View File

@ -58,6 +58,8 @@ GameController::GameController(QObject* parent)
, m_stateSlot(1) , m_stateSlot(1)
, m_backupLoadState(nullptr) , m_backupLoadState(nullptr)
, m_backupSaveState(nullptr) , m_backupSaveState(nullptr)
, m_saveStateFlags(SAVESTATE_SCREENSHOT | SAVESTATE_SAVEDATA | SAVESTATE_CHEATS)
, m_loadStateFlags(SAVESTATE_SCREENSHOT)
{ {
m_renderer = new GBAVideoSoftwareRenderer; m_renderer = new GBAVideoSoftwareRenderer;
GBAVideoSoftwareRendererCreate(m_renderer); GBAVideoSoftwareRendererCreate(m_renderer);
@ -112,7 +114,7 @@ GameController::GameController(QObject* parent)
context->gba->video.renderer->disableOBJ = !controller->m_videoLayers[4]; context->gba->video.renderer->disableOBJ = !controller->m_videoLayers[4];
controller->m_fpsTarget = context->fpsTarget; controller->m_fpsTarget = context->fpsTarget;
if (context->dirs.state && GBALoadState(context, context->dirs.state, 0, SAVESTATE_SCREENSHOT)) { if (context->dirs.state && GBALoadState(context, context->dirs.state, 0, controller->m_loadStateFlags)) {
VFile* vf = GBAGetState(context->gba, context->dirs.state, 0, true); VFile* vf = GBAGetState(context->gba, context->dirs.state, 0, true);
if (vf) { if (vf) {
vf->truncate(vf, 0); vf->truncate(vf, 0);
@ -141,7 +143,7 @@ GameController::GameController(QObject* parent)
return false; return false;
} }
GameController* controller = static_cast<GameController*>(context->userData); GameController* controller = static_cast<GameController*>(context->userData);
if (!GBASaveState(context, context->dirs.state, 0, true)) { if (!GBASaveState(context, context->dirs.state, 0, controller->m_saveStateFlags)) {
return false; return false;
} }
QMetaObject::invokeMethod(controller, "closeGame"); QMetaObject::invokeMethod(controller, "closeGame");
@ -710,7 +712,7 @@ void GameController::loadState(int slot) {
controller->m_backupLoadState = new GBASerializedState; controller->m_backupLoadState = new GBASerializedState;
} }
GBASerialize(context->gba, controller->m_backupLoadState); GBASerialize(context->gba, controller->m_backupLoadState);
if (GBALoadState(context, context->dirs.state, controller->m_stateSlot, SAVESTATE_SCREENSHOT)) { if (GBALoadState(context, context->dirs.state, controller->m_stateSlot, controller->m_loadStateFlags)) {
controller->frameAvailable(controller->m_drawContext); controller->frameAvailable(controller->m_drawContext);
controller->stateLoaded(context); controller->stateLoaded(context);
} }
@ -733,7 +735,7 @@ void GameController::saveState(int slot) {
vf->read(vf, controller->m_backupSaveState.data(), controller->m_backupSaveState.size()); vf->read(vf, controller->m_backupSaveState.data(), controller->m_backupSaveState.size());
vf->close(vf); vf->close(vf);
} }
GBASaveState(context, context->dirs.state, controller->m_stateSlot, SAVESTATE_SCREENSHOT | EXTDATA_SAVEDATA); GBASaveState(context, context->dirs.state, controller->m_stateSlot, controller->m_saveStateFlags);
}); });
} }

View File

@ -209,6 +209,8 @@ private:
int m_stateSlot; int m_stateSlot;
GBASerializedState* m_backupLoadState; GBASerializedState* m_backupLoadState;
QByteArray m_backupSaveState; QByteArray m_backupSaveState;
int m_saveStateFlags;
int m_loadStateFlags;
InputController* m_inputController; InputController* m_inputController;
MultiplayerController* m_multiplayer; MultiplayerController* m_multiplayer;