mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Show the logo screen before the memstick screen on first boot with scoped storage
This commit is contained in:
parent
52527798c0
commit
76df060349
4 changed files with 40 additions and 20 deletions
|
@ -623,12 +623,15 @@ void ConfirmMemstickMoveScreen::FinishFolderMove() {
|
|||
if (!initialSetup_) {
|
||||
// We restart the app here, to get the new settings.
|
||||
System_SendMessage("graphics_restart", "");
|
||||
}
|
||||
|
||||
if (g_Config.Save("MemstickPathChanged")) {
|
||||
TriggerFinish(DialogResult::DR_OK);
|
||||
} else {
|
||||
error_ = iz->T("Failed to save config");
|
||||
RecreateViews();
|
||||
// This is initial setup, we now switch to the main screen, if we were successful
|
||||
// (which we better have been...)
|
||||
if (g_Config.Save("MemstickPathChanged")) {
|
||||
// TriggerFinish(DialogResult::DR_OK);
|
||||
screenManager()->switchScreen(new MainScreen());
|
||||
} else {
|
||||
error_ = iz->T("Failed to save config");
|
||||
RecreateViews();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#include "UI/GameSettingsScreen.h"
|
||||
#include "UI/MainScreen.h"
|
||||
#include "UI/MiscScreens.h"
|
||||
#include "UI/MemStickScreen.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma execution_character_set("utf-8")
|
||||
|
@ -668,25 +669,35 @@ void LogoScreen::Next() {
|
|||
if (!switched_) {
|
||||
switched_ = true;
|
||||
Path gamePath = boot_filename;
|
||||
if (gotoGameSettings_) {
|
||||
|
||||
switch (afterLogoScreen_) {
|
||||
case AfterLogoScreen::TO_GAME_SETTINGS:
|
||||
if (!gamePath.empty()) {
|
||||
screenManager()->switchScreen(new EmuScreen(gamePath));
|
||||
} else {
|
||||
screenManager()->switchScreen(new MainScreen());
|
||||
}
|
||||
screenManager()->push(new GameSettingsScreen(gamePath));
|
||||
} else if (boot_filename.size()) {
|
||||
screenManager()->switchScreen(new EmuScreen(gamePath));
|
||||
} else {
|
||||
screenManager()->switchScreen(new MainScreen());
|
||||
break;
|
||||
case AfterLogoScreen::MEMSTICK_SCREEN_INITIAL_SETUP:
|
||||
screenManager()->switchScreen(new MemStickScreen(true));
|
||||
break;
|
||||
case AfterLogoScreen::DEFAULT:
|
||||
default:
|
||||
if (boot_filename.size()) {
|
||||
screenManager()->switchScreen(new EmuScreen(gamePath));
|
||||
} else {
|
||||
screenManager()->switchScreen(new MainScreen());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const float logoScreenSeconds = 2.5f;
|
||||
|
||||
LogoScreen::LogoScreen(bool gotoGameSettings)
|
||||
: gotoGameSettings_(gotoGameSettings) {
|
||||
LogoScreen::LogoScreen(AfterLogoScreen afterLogoScreen)
|
||||
: afterLogoScreen_(afterLogoScreen) {
|
||||
}
|
||||
|
||||
void LogoScreen::update() {
|
||||
|
@ -1091,4 +1102,4 @@ void SettingInfoMessage::Draw(UIContext &dc) {
|
|||
|
||||
std::string SettingInfoMessage::GetText() const {
|
||||
return showing_ && text_ ? text_->GetText() : "";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -125,9 +125,16 @@ private:
|
|||
std::vector<TextureShaderInfo> shaders_;
|
||||
};
|
||||
|
||||
enum class AfterLogoScreen {
|
||||
TO_GAME_SETTINGS,
|
||||
DEFAULT,
|
||||
MEMSTICK_SCREEN_INITIAL_SETUP,
|
||||
};
|
||||
|
||||
class LogoScreen : public UIScreen {
|
||||
public:
|
||||
LogoScreen(bool gotoGameSettings = false);
|
||||
LogoScreen(AfterLogoScreen afterLogoScreen = AfterLogoScreen::DEFAULT);
|
||||
|
||||
bool key(const KeyInput &key) override;
|
||||
bool touch(const TouchInput &touch) override;
|
||||
void update() override;
|
||||
|
@ -140,7 +147,7 @@ private:
|
|||
int frames_ = 0;
|
||||
double sinceStart_ = 0.0;
|
||||
bool switched_ = false;
|
||||
bool gotoGameSettings_ = false;
|
||||
AfterLogoScreen afterLogoScreen_;
|
||||
};
|
||||
|
||||
class CreditsScreen : public UIDialogScreenWithBackground {
|
||||
|
|
|
@ -807,17 +807,16 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch
|
|||
screenManager = new ScreenManager();
|
||||
if (g_Config.memStickDirectory.empty()) {
|
||||
INFO_LOG(SYSTEM, "No memstick directory! Asking for one to be configured.");
|
||||
screenManager->switchScreen(new LogoScreen(false));
|
||||
screenManager->push(new MemStickScreen(true));
|
||||
screenManager->switchScreen(new LogoScreen(AfterLogoScreen::MEMSTICK_SCREEN_INITIAL_SETUP));
|
||||
} else if (gotoGameSettings) {
|
||||
screenManager->switchScreen(new LogoScreen(true));
|
||||
screenManager->switchScreen(new LogoScreen(AfterLogoScreen::TO_GAME_SETTINGS));
|
||||
} else if (gotoTouchScreenTest) {
|
||||
screenManager->switchScreen(new MainScreen());
|
||||
screenManager->push(new TouchTestScreen());
|
||||
} else if (skipLogo) {
|
||||
screenManager->switchScreen(new EmuScreen(boot_filename));
|
||||
} else {
|
||||
screenManager->switchScreen(new LogoScreen());
|
||||
screenManager->switchScreen(new LogoScreen(AfterLogoScreen::DEFAULT));
|
||||
}
|
||||
|
||||
// Easy testing
|
||||
|
|
Loading…
Add table
Reference in a new issue