Implement RetroAchivements

This commit is contained in:
Connor McLaughlin
2021-02-27 00:44:53 +10:00
parent ef524d7dea
commit 0ec2c87a0e
34 changed files with 2419 additions and 65 deletions

View File

@ -93,7 +93,6 @@ public:
std::vector<u32> screenshot_data;
};
using HostInterface::LoadState;
using HostInterface::SaveState;
/// Returns the name of the frontend.
@ -127,10 +126,15 @@ public:
virtual bool BootSystem(const SystemBootParameters& parameters) override;
virtual void PowerOffSystem() override;
virtual void ResetSystem() override;
virtual void DestroySystem() override;
/// Returns the settings interface.
ALWAYS_INLINE SettingsInterface* GetSettingsInterface() const { return m_settings_interface.get(); }
ALWAYS_INLINE std::lock_guard<std::recursive_mutex> GetSettingsLock()
{
return std::lock_guard<std::recursive_mutex>(m_settings_mutex);
}
/// Returns the game list.
ALWAYS_INLINE GameList* GetGameList() const { return m_game_list.get(); }
@ -165,6 +169,9 @@ public:
/// Saves the current input configuration to the specified profile name.
bool SaveInputProfile(const char* profile_path);
/// Loads state from the specified filename.
bool LoadState(const char* filename);
/// Loads the current emulation state from file. Specifying a slot of -1 loads the "resume" game state.
bool LoadState(bool global, s32 slot);
@ -273,6 +280,9 @@ public:
/// Returns a pointer to the top-level window, needed by some controller interfaces.
virtual void* GetTopLevelWindowHandle() const;
/// Called when achievements data is loaded.
virtual void OnAchievementsRefreshed();
/// Opens a file in the DuckStation "package".
/// This is the APK for Android builds, or the program directory for standalone builds.
virtual std::unique_ptr<ByteStream> OpenPackageFile(const char* path, u32 flags) override;
@ -408,8 +418,8 @@ protected:
std::unique_ptr<HostDisplayTexture> m_logo_texture;
std::deque<OSDMessage> m_osd_active_messages; // accessed only by GUI/OSD thread (no lock reqs)
std::deque<OSDMessage> m_osd_posted_messages; // written to by multiple threads.
std::deque<OSDMessage> m_osd_active_messages; // accessed only by GUI/OSD thread (no lock reqs)
std::deque<OSDMessage> m_osd_posted_messages; // written to by multiple threads.
std::mutex m_osd_messages_lock;
bool m_fullscreen_ui_enabled = false;
@ -459,6 +469,10 @@ private:
void PollDiscordPresence();
#endif
#ifdef WITH_CHEEVOS
void UpdateCheevosActive();
#endif
HotkeyInfoList m_hotkeys;
std::unique_ptr<FrontendCommon::SaveStateSelectorUI> m_save_state_selector_ui;