Migrate Savestates overlay

Create necessary files to move the savestates overlay functions to a new subpage in preparation for slots.
This commit is contained in:
Darkhost1999 2024-11-22 16:51:41 -06:00
parent a9f6b012b8
commit 845c4e3221
9 changed files with 82 additions and 45 deletions

View file

@ -522,6 +522,7 @@ target_sources(rpcs3_emu PRIVATE
RSX/Overlays/HomeMenu/overlay_home_menu_message_box.cpp
RSX/Overlays/HomeMenu/overlay_home_menu_page.cpp
RSX/Overlays/HomeMenu/overlay_home_menu_settings.cpp
RSX/Overlays/HomeMenu/overlay_home_menu_savestate.cpp
RSX/Overlays/Network/overlay_recvmessage_dialog.cpp
RSX/Overlays/Network/overlay_sendmessage_dialog.cpp
RSX/Overlays/overlays.cpp

View file

@ -8,8 +8,6 @@
extern atomic_t<bool> g_user_asked_for_recording;
extern atomic_t<bool> g_user_asked_for_screenshot;
extern bool boot_last_savestate(bool testing);
namespace rsx
{
namespace overlays
@ -74,48 +72,7 @@ namespace rsx
return page_navigation::exit;
});
const bool suspend_mode = g_cfg.savestate.suspend_emu.get();
std::unique_ptr<overlay_element> save_state = std::make_unique<home_menu_entry>(get_localized_string(suspend_mode ? localized_string_id::HOME_MENU_SAVESTATE_AND_EXIT : localized_string_id::HOME_MENU_SAVESTATE));
add_item(save_state, [suspend_mode](pad_button btn) -> page_navigation
{
if (btn != pad_button::cross) return page_navigation::stay;
rsx_log.notice("User selected savestate in home menu");
Emu.CallFromMainThread([suspend_mode]()
{
if (!suspend_mode)
{
Emu.after_kill_callback = []()
{
Emu.Restart();
};
}
Emu.Kill(false, true);
});
return page_navigation::exit;
});
if (!suspend_mode && boot_last_savestate(true))
{
std::unique_ptr<overlay_element> reload_state = std::make_unique<home_menu_entry>(get_localized_string(localized_string_id::HOME_MENU_RELOAD_SAVESTATE));
add_item(reload_state, [](pad_button btn) -> page_navigation
{
if (btn != pad_button::cross) return page_navigation::stay;
rsx_log.notice("User selected reload savestate in home menu");
Emu.CallFromMainThread([]()
{
boot_last_savestate(false);
});
return page_navigation::exit;
});
}
add_page(std::make_shared<home_menu_savestate>(x, y, width, height, use_separators, this));
std::unique_ptr<overlay_element> restart = std::make_unique<home_menu_entry>(get_localized_string(localized_string_id::HOME_MENU_RESTART));
add_item(restart, [](pad_button btn) -> page_navigation

View file

@ -2,6 +2,7 @@
#include "overlay_home_menu_page.h"
#include "overlay_home_menu_settings.h"
#include "overlay_home_menu_savestate.h"
namespace rsx
{

View file

@ -0,0 +1,50 @@
#include "stdafx.h"
#include "overlay_home_menu_savestate.h"
#include "overlay_home_menu_components.h"
#include "Emu/system_config.h"
extern bool boot_last_savestate(bool testing);
namespace rsx
{
namespace overlays
{
home_menu_savestate::home_menu_savestate(s16 x, s16 y, u16 width, u16 height, bool use_separators, home_menu_page* parent)
: home_menu_page(x, y, width, height, use_separators, parent, get_localized_string(localized_string_id::HOME_MENU_SAVESTATE))
{
const bool suspend_mode = g_cfg.savestate.suspend_emu.get();
std::unique_ptr<overlay_element> save_state = std::make_unique<home_menu_entry>(
get_localized_string(suspend_mode ? localized_string_id::HOME_MENU_SAVESTATE_AND_EXIT : localized_string_id::HOME_MENU_SAVESTATE_SAVE));
add_item(save_state, [suspend_mode](pad_button btn) -> page_navigation
{
if (btn != pad_button::cross) return page_navigation::stay;
rsx_log.notice("User selected savestate in home menu");
Emu.CallFromMainThread([suspend_mode]()
{
if (!suspend_mode)
{
Emu.after_kill_callback = []() { Emu.Restart(); };
}
Emu.Kill(false, true);
});
return page_navigation::exit;
});
if (!suspend_mode && boot_last_savestate(true)) {
std::unique_ptr<overlay_element> reload_state = std::make_unique<home_menu_entry>(
get_localized_string(localized_string_id::HOME_MENU_RELOAD_SAVESTATE));
add_item(reload_state, [](pad_button btn) -> page_navigation
{
if (btn != pad_button::cross) return page_navigation::stay;
rsx_log.notice("User selected reload savestate in home menu");
Emu.CallFromMainThread([]() { boot_last_savestate(false); });
return page_navigation::exit;
});
}
apply_layout();
}
}
}

View file

@ -0,0 +1,18 @@
#pragma once
#include "overlay_home_menu_page.h"
namespace rsx
{
namespace overlays
{
struct home_menu_savestate : public home_menu_page
{
public:
home_menu_savestate(s16 x, s16 y, u16 width, u16 height, bool use_separators, home_menu_page* parent);
private:
std::vector<std::shared_ptr<home_menu_page>> m_savestate_pages;
};
}
}

View file

@ -265,6 +265,7 @@ enum class localized_string_id
HOME_MENU_SETTINGS_DEBUG_TEXTURE_LOD_BIAS,
HOME_MENU_SCREENSHOT,
HOME_MENU_SAVESTATE,
HOME_MENU_SAVESTATE_SAVE,
HOME_MENU_SAVESTATE_AND_EXIT,
HOME_MENU_RELOAD_SAVESTATE,
HOME_MENU_RECORDING,

View file

@ -120,6 +120,7 @@
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_main_menu.cpp" />
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_page.cpp" />
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_settings.cpp" />
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_savestate.cpp" />
<ClCompile Include="Emu\RSX\Overlays\Network\overlay_recvmessage_dialog.cpp" />
<ClCompile Include="Emu\RSX\Overlays\Network\overlay_sendmessage_dialog.cpp" />
<ClCompile Include="Emu\RSX\Overlays\overlay_animated_icon.cpp" />
@ -642,6 +643,7 @@
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_main_menu.h" />
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_page.h" />
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_settings.h" />
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_savestate.h" />
<ClInclude Include="Emu\RSX\Overlays\Network\overlay_recvmessage_dialog.h" />
<ClInclude Include="Emu\RSX\Overlays\Network\overlay_sendmessage_dialog.h" />
<ClInclude Include="Emu\RSX\Overlays\overlay_animated_icon.h" />

View file

@ -1174,6 +1174,9 @@
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_settings.cpp">
<Filter>Emu\GPU\RSX\Overlays\HomeMenu\Pages</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_savestate.cpp">
<Filter>Emu\GPU\RSX\Overlays\HomeMenu\Pages</Filter>
</ClCompile>
<ClCompile Include="Emu\RSX\Overlays\overlay_animated_icon.cpp">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClCompile>
@ -2410,6 +2413,9 @@
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_settings.h">
<Filter>Emu\GPU\RSX\Overlays\HomeMenu\Pages</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Overlays\HomeMenu\overlay_home_menu_savestate.h">
<Filter>Emu\GPU\RSX\Overlays\HomeMenu\Pages</Filter>
</ClInclude>
<ClInclude Include="Emu\RSX\Overlays\overlay_loading_icon.hpp">
<Filter>Emu\GPU\RSX\Overlays</Filter>
</ClInclude>

View file

@ -285,7 +285,8 @@ private:
case localized_string_id::HOME_MENU_SETTINGS_DEBUG_DISABLE_VIDEO_OUTPUT: return tr("Disable Video Output", "Debug");
case localized_string_id::HOME_MENU_SETTINGS_DEBUG_TEXTURE_LOD_BIAS: return tr("Texture LOD Bias Addend", "Debug");
case localized_string_id::HOME_MENU_SCREENSHOT: return tr("Take Screenshot");
case localized_string_id::HOME_MENU_SAVESTATE: return tr("Save Emulation State");
case localized_string_id::HOME_MENU_SAVESTATE: return tr("SaveState");
case localized_string_id::HOME_MENU_SAVESTATE_SAVE: return tr("Save Emulation State");
case localized_string_id::HOME_MENU_SAVESTATE_AND_EXIT: return tr("Save Emulation State And Exit");
case localized_string_id::HOME_MENU_RELOAD_SAVESTATE: return tr("Reload Last Emulation State");
case localized_string_id::HOME_MENU_RECORDING: return tr("Start/Stop Recording");