diff --git a/Core/SaveState.cpp b/Core/SaveState.cpp index b727889e71..9db711e466 100644 --- a/Core/SaveState.cpp +++ b/Core/SaveState.cpp @@ -397,22 +397,22 @@ namespace SaveState return title + " (" + filename + ")"; } - std::string GetTitle(const std::string &filename) { + std::string GetTitle(const Path &filename) { std::string title; - if (CChunkFileReader::GetFileTitle(Path(filename), &title) == CChunkFileReader::ERROR_NONE) { + if (CChunkFileReader::GetFileTitle(filename, &title) == CChunkFileReader::ERROR_NONE) { if (title.empty()) { - return File::GetFilename(filename); + return filename.GetFilename(); } - return AppendSlotTitle(filename, title); + return AppendSlotTitle(filename.GetFilename(), title); } // The file can't be loaded - let's note that. auto sy = GetI18NCategory("System"); - return File::GetFilename(filename) + " " + sy->T("(broken)"); + return filename.GetFilename() + " " + sy->T("(broken)"); } - Path GenerateSaveSlotFilename(const std::string &gameFilename, int slot, const char *extension) + Path GenerateSaveSlotFilename(const Path &gameFilename, int slot, const char *extension) { std::string discId = g_paramSFO.GetValueString("DISC_ID"); std::string discVer = g_paramSFO.GetValueString("DISC_VERSION"); @@ -437,7 +437,7 @@ namespace SaveState g_Config.iCurrentStateSlot = (g_Config.iCurrentStateSlot + 1) % NUM_SLOTS; } - void LoadSlot(const std::string &gameFilename, int slot, Callback callback, void *cbUserData) + void LoadSlot(const Path &gameFilename, int slot, Callback callback, void *cbUserData) { Path fn = GenerateSaveSlotFilename(gameFilename, slot, STATE_EXTENSION); if (!fn.empty()) { @@ -471,7 +471,7 @@ namespace SaveState } } - void SaveSlot(const std::string &gameFilename, int slot, Callback callback, void *cbUserData) + void SaveSlot(const Path &gameFilename, int slot, Callback callback, void *cbUserData) { Path fn = GenerateSaveSlotFilename(gameFilename, slot, STATE_EXTENSION); Path shot = GenerateSaveSlotFilename(gameFilename, slot, SCREENSHOT_EXTENSION); @@ -506,7 +506,7 @@ namespace SaveState } } - bool UndoSaveSlot(const std::string &gameFilename, int slot) { + bool UndoSaveSlot(const Path &gameFilename, int slot) { Path fn = GenerateSaveSlotFilename(gameFilename, slot, STATE_EXTENSION); Path shot = GenerateSaveSlotFilename(gameFilename, slot, SCREENSHOT_EXTENSION); Path fnUndo = GenerateSaveSlotFilename(gameFilename, slot, UNDO_STATE_EXTENSION); @@ -523,19 +523,19 @@ namespace SaveState return false; } - bool HasSaveInSlot(const std::string &gameFilename, int slot) + bool HasSaveInSlot(const Path &gameFilename, int slot) { Path fn = GenerateSaveSlotFilename(gameFilename, slot, STATE_EXTENSION); return File::Exists(fn); } - bool HasUndoSaveInSlot(const std::string &gameFilename, int slot) + bool HasUndoSaveInSlot(const Path &gameFilename, int slot) { Path fn = GenerateSaveSlotFilename(gameFilename, slot, STATE_EXTENSION); return File::Exists(fn.WithExtraExtension(".undo")); } - bool HasScreenshotInSlot(const std::string &gameFilename, int slot) + bool HasScreenshotInSlot(const Path &gameFilename, int slot) { Path fn = GenerateSaveSlotFilename(gameFilename, slot, SCREENSHOT_EXTENSION); return File::Exists(fn); @@ -578,7 +578,7 @@ namespace SaveState return true; } - int GetNewestSlot(const std::string &gameFilename) { + int GetNewestSlot(const Path &gameFilename) { int newestSlot = -1; tm newestDate = {0}; for (int i = 0; i < NUM_SLOTS; i++) { @@ -595,7 +595,7 @@ namespace SaveState return newestSlot; } - int GetOldestSlot(const std::string &gameFilename) { + int GetOldestSlot(const Path &gameFilename) { int oldestSlot = -1; tm oldestDate = {0}; for (int i = 0; i < NUM_SLOTS; i++) { @@ -612,7 +612,7 @@ namespace SaveState return oldestSlot; } - std::string GetSlotDateAsString(const std::string &gameFilename, int slot) { + std::string GetSlotDateAsString(const Path &gameFilename, int slot) { Path fn = GenerateSaveSlotFilename(gameFilename, slot, STATE_EXTENSION); if (File::Exists(fn)) { tm time; diff --git a/Core/SaveState.h b/Core/SaveState.h index 6399e7f0a7..d7bb0142fe 100644 --- a/Core/SaveState.h +++ b/Core/SaveState.h @@ -42,24 +42,24 @@ namespace SaveState // Cycle through the 5 savestate slots void NextSlot(); - void SaveSlot(const std::string &gameFilename, int slot, Callback callback, void *cbUserData = 0); - void LoadSlot(const std::string &gameFilename, int slot, Callback callback, void *cbUserData = 0); - bool UndoSaveSlot(const std::string &gameFilename, int slot); + void SaveSlot(const Path &gameFilename, int slot, Callback callback, void *cbUserData = 0); + void LoadSlot(const Path &gameFilename, int slot, Callback callback, void *cbUserData = 0); + bool UndoSaveSlot(const Path &gameFilename, int slot); // Checks whether there's an existing save in the specified slot. - bool HasSaveInSlot(const std::string &gameFilename, int slot); - bool HasUndoSaveInSlot(const std::string &gameFilename, int slot); - bool HasScreenshotInSlot(const std::string &gameFilename, int slot); + bool HasSaveInSlot(const Path &gameFilename, int slot); + bool HasUndoSaveInSlot(const Path &gameFilename, int slot); + bool HasScreenshotInSlot(const Path &gameFilename, int slot); int GetCurrentSlot(); // Returns -1 if there's no oldest/newest slot. - int GetNewestSlot(const std::string &gameFilename); - int GetOldestSlot(const std::string &gameFilename); + int GetNewestSlot(const Path &gameFilename); + int GetOldestSlot(const Path &gameFilename); - std::string GetSlotDateAsString(const std::string &gameFilename, int slot); - Path GenerateSaveSlotFilename(const std::string &gameFilename, int slot, const char *extension); + std::string GetSlotDateAsString(const Path &gameFilename, int slot); + Path GenerateSaveSlotFilename(const Path &gameFilename, int slot, const char *extension); - std::string GetTitle(const std::string &filename); + std::string GetTitle(const Path &filename); // Load the specified file into the current state (async.) // Warning: callback will be called on a different thread. diff --git a/Qt/mainwindow.cpp b/Qt/mainwindow.cpp index f8aaf61d2c..53e18c23d4 100644 --- a/Qt/mainwindow.cpp +++ b/Qt/mainwindow.cpp @@ -157,13 +157,13 @@ void SaveStateActionFinished(SaveState::Status status, const std::string &messag void MainWindow::qlstateAct() { - std::string gamePath = PSP_CoreParameter().fileToStart.ToString(); + Path gamePath = PSP_CoreParameter().fileToStart; SaveState::LoadSlot(gamePath, 0, SaveStateActionFinished, this); } void MainWindow::qsstateAct() { - std::string gamePath = PSP_CoreParameter().fileToStart.ToString(); + Path gamePath = PSP_CoreParameter().fileToStart; SaveState::SaveSlot(gamePath, 0, SaveStateActionFinished, this); } diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index 5c504b8392..799cc20da2 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -629,10 +629,10 @@ void EmuScreen::onVKeyDown(int virtualKeyCode) { } break; case VIRTKEY_SAVE_STATE: - SaveState::SaveSlot(gamePath_.ToString(), g_Config.iCurrentStateSlot, &AfterSaveStateAction); + SaveState::SaveSlot(gamePath_, g_Config.iCurrentStateSlot, &AfterSaveStateAction); break; case VIRTKEY_LOAD_STATE: - SaveState::LoadSlot(gamePath_.ToString(), g_Config.iCurrentStateSlot, &AfterSaveStateAction); + SaveState::LoadSlot(gamePath_, g_Config.iCurrentStateSlot, &AfterSaveStateAction); break; case VIRTKEY_NEXT_SLOT: SaveState::NextSlot(); @@ -1226,8 +1226,8 @@ void EmuScreen::update() { saveStateSlot_ = currentSlot; Path fn; - if (SaveState::HasSaveInSlot(gamePath_.ToString(), currentSlot)) { - fn = SaveState::GenerateSaveSlotFilename(gamePath_.ToString(), currentSlot, SaveState::SCREENSHOT_EXTENSION); + if (SaveState::HasSaveInSlot(gamePath_, currentSlot)) { + fn = SaveState::GenerateSaveSlotFilename(gamePath_, currentSlot, SaveState::SCREENSHOT_EXTENSION); } saveStatePreview_->SetFilename(fn); @@ -1672,18 +1672,18 @@ void EmuScreen::autoLoad() { case (int)AutoLoadSaveState::OFF: // "AutoLoad Off" return; case (int)AutoLoadSaveState::OLDEST: // "Oldest Save" - autoSlot = SaveState::GetOldestSlot(gamePath_.ToString()); + autoSlot = SaveState::GetOldestSlot(gamePath_); break; case (int)AutoLoadSaveState::NEWEST: // "Newest Save" - autoSlot = SaveState::GetNewestSlot(gamePath_.ToString()); + autoSlot = SaveState::GetNewestSlot(gamePath_); break; default: // try the specific save state slot specified - autoSlot = (SaveState::HasSaveInSlot(gamePath_.ToString(), g_Config.iAutoLoadSaveState - 3)) ? (g_Config.iAutoLoadSaveState - 3) : -1; + autoSlot = (SaveState::HasSaveInSlot(gamePath_, g_Config.iAutoLoadSaveState - 3)) ? (g_Config.iAutoLoadSaveState - 3) : -1; break; } if (g_Config.iAutoLoadSaveState && autoSlot != -1) { - SaveState::LoadSlot(gamePath_.ToString(), autoSlot, &AfterSaveStateAction); + SaveState::LoadSlot(gamePath_, autoSlot, &AfterSaveStateAction); g_Config.iCurrentStateSlot = autoSlot; } } diff --git a/UI/GameInfoCache.cpp b/UI/GameInfoCache.cpp index 5c1ebaad4c..99873b9172 100644 --- a/UI/GameInfoCache.cpp +++ b/UI/GameInfoCache.cpp @@ -486,7 +486,7 @@ handleELF: case IdentifiedFileType::PPSSPP_SAVESTATE: { - info_->SetTitle(SaveState::GetTitle(gamePath_.ToString())); + info_->SetTitle(SaveState::GetTitle(gamePath_)); std::lock_guard guard(info_->lock); diff --git a/UI/PauseScreen.cpp b/UI/PauseScreen.cpp index f6d89b663c..f4108a85f8 100644 --- a/UI/PauseScreen.cpp +++ b/UI/PauseScreen.cpp @@ -206,7 +206,7 @@ public: } std::string GetScreenshotTitle() const { - return SaveState::GetSlotDateAsString(gamePath_.ToString(), slot_); + return SaveState::GetSlotDateAsString(gamePath_, slot_); } UI::Event OnStateLoaded; @@ -229,7 +229,7 @@ private: SaveSlotView::SaveSlotView(const Path &gameFilename, int slot, UI::LayoutParams *layoutParams) : UI::LinearLayout(UI::ORIENT_HORIZONTAL, layoutParams), slot_(slot), gamePath_(gameFilename) { using namespace UI; - screenshotFilename_ = SaveState::GenerateSaveSlotFilename(gamePath_.ToString(), slot, SaveState::SCREENSHOT_EXTENSION); + screenshotFilename_ = SaveState::GenerateSaveSlotFilename(gamePath_, slot, SaveState::SCREENSHOT_EXTENSION); Add(new Spacer(5)); AsyncImageFileView *fv = Add(new AsyncImageFileView(screenshotFilename_, IS_DEFAULT, new UI::LayoutParams(82 * 2, 47 * 2))); @@ -246,11 +246,11 @@ SaveSlotView::SaveSlotView(const Path &gameFilename, int slot, UI::LayoutParams fv->OnClick.Handle(this, &SaveSlotView::OnScreenshotClick); - if (SaveState::HasSaveInSlot(gamePath_.ToString(), slot)) { + if (SaveState::HasSaveInSlot(gamePath_, slot)) { loadStateButton_ = buttons->Add(new Button(pa->T("Load State"), new LinearLayoutParams(0.0, G_VCENTER))); loadStateButton_->OnClick.Handle(this, &SaveSlotView::OnLoadState); - std::string dateStr = SaveState::GetSlotDateAsString(gamePath_.ToString(), slot_); + std::string dateStr = SaveState::GetSlotDateAsString(gamePath_, slot_); std::vector dateStrs; SplitString(dateStr, ' ', dateStrs); if (!dateStrs.empty() && !dateStrs[0].empty()) { @@ -281,7 +281,7 @@ static void AfterSaveStateAction(SaveState::Status status, const std::string &me UI::EventReturn SaveSlotView::OnLoadState(UI::EventParams &e) { g_Config.iCurrentStateSlot = slot_; - SaveState::LoadSlot(gamePath_.ToString(), slot_, &AfterSaveStateAction); + SaveState::LoadSlot(gamePath_, slot_, &AfterSaveStateAction); UI::EventParams e2{}; e2.v = this; OnStateLoaded.Trigger(e2); @@ -290,7 +290,7 @@ UI::EventReturn SaveSlotView::OnLoadState(UI::EventParams &e) { UI::EventReturn SaveSlotView::OnSaveState(UI::EventParams &e) { g_Config.iCurrentStateSlot = slot_; - SaveState::SaveSlot(gamePath_.ToString(), slot_, &AfterSaveStateAction); + SaveState::SaveSlot(gamePath_, slot_, &AfterSaveStateAction); UI::EventParams e2{}; e2.v = this; OnStateSaved.Trigger(e2); @@ -408,7 +408,7 @@ void GamePauseScreen::dialogFinished(const Screen *dialog, DialogResult dr) { ScreenshotViewScreen *s = (ScreenshotViewScreen *)dialog; int slot = s->GetSlot(); g_Config.iCurrentStateSlot = slot; - SaveState::LoadSlot(gamePath_.ToString(), slot, &AfterSaveStateAction); + SaveState::LoadSlot(gamePath_, slot, &AfterSaveStateAction); finishNextFrame_ = true; } else { @@ -421,7 +421,7 @@ UI::EventReturn GamePauseScreen::OnScreenshotClicked(UI::EventParams &e) { SaveSlotView *v = static_cast(e.v); int slot = v->GetSlot(); g_Config.iCurrentStateSlot = v->GetSlot(); - if (SaveState::HasSaveInSlot(gamePath_.ToString(), slot)) { + if (SaveState::HasSaveInSlot(gamePath_, slot)) { Path fn = v->GetScreenshotFilename(); std::string title = v->GetScreenshotTitle(); auto pa = GetI18NCategory("Pause"); diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp index 39a48fe8a0..c0d790e06f 100644 --- a/Windows/MainWindowMenu.cpp +++ b/Windows/MainWindowMenu.cpp @@ -681,7 +681,7 @@ namespace MainWindow { case ID_FILE_QUICKLOADSTATE: { SetCursor(LoadCursor(0, IDC_WAIT)); - SaveState::LoadSlot(PSP_CoreParameter().fileToStart.ToString(), g_Config.iCurrentStateSlot, SaveStateActionFinished); + SaveState::LoadSlot(PSP_CoreParameter().fileToStart, g_Config.iCurrentStateSlot, SaveStateActionFinished); break; } @@ -690,14 +690,14 @@ namespace MainWindow { if (KeyMap::g_controllerMap[VIRTKEY_LOAD_STATE].empty()) { SetCursor(LoadCursor(0, IDC_WAIT)); - SaveState::LoadSlot(PSP_CoreParameter().fileToStart.ToString(), g_Config.iCurrentStateSlot, SaveStateActionFinished); + SaveState::LoadSlot(PSP_CoreParameter().fileToStart, g_Config.iCurrentStateSlot, SaveStateActionFinished); } break; } case ID_FILE_QUICKSAVESTATE: { SetCursor(LoadCursor(0, IDC_WAIT)); - SaveState::SaveSlot(PSP_CoreParameter().fileToStart.ToString(), g_Config.iCurrentStateSlot, SaveStateActionFinished); + SaveState::SaveSlot(PSP_CoreParameter().fileToStart, g_Config.iCurrentStateSlot, SaveStateActionFinished); break; } @@ -706,7 +706,7 @@ namespace MainWindow { if (KeyMap::g_controllerMap[VIRTKEY_SAVE_STATE].empty()) { SetCursor(LoadCursor(0, IDC_WAIT)); - SaveState::SaveSlot(PSP_CoreParameter().fileToStart.ToString(), g_Config.iCurrentStateSlot, SaveStateActionFinished); + SaveState::SaveSlot(PSP_CoreParameter().fileToStart, g_Config.iCurrentStateSlot, SaveStateActionFinished); break; } break;