diff --git a/src/core/emulator_settings.h b/src/core/emulator_settings.h index 546a362fa..2a3f422ca 100644 --- a/src/core/emulator_settings.h +++ b/src/core/emulator_settings.h @@ -285,9 +285,6 @@ public: UserManager& GetUserManager() { return m_userManager; } - const UserManager& GetUserManager() const { - return m_userManager; - } private: GeneralSettings m_general{}; diff --git a/src/core/user_manager.cpp b/src/core/user_manager.cpp index b285787d8..6134b6ab4 100644 --- a/src/core/user_manager.cpp +++ b/src/core/user_manager.cpp @@ -24,6 +24,7 @@ bool UserManager::AddUser(const User& user) { std::filesystem::create_directory(user_dir, ec); std::filesystem::create_directory(user_dir / "savedata", ec); std::filesystem::create_directory(user_dir / "trophy", ec); + std::filesystem::create_directory(user_dir / "trophy/data", ec); } return true; @@ -86,6 +87,7 @@ std::vector UserManager::CreateDefaultUser() { std::filesystem::create_directory(user_dir); std::filesystem::create_directory(user_dir / "savedata"); std::filesystem::create_directory(user_dir / "trophy"); + std::filesystem::create_directory(user_dir / "trophy/data"); } return {default_user}; @@ -109,4 +111,20 @@ void UserManager::SetControllerPort(u32 user_id, int port) { if (u.user_id == user_id) u.controller_port = port; } +} +// Returns a list of users that have valid home directories +std::vector UserManager::GetValidUsers() const { + std::vector result; + result.reserve(m_users.user.size()); + + const auto home_dir = EmulatorSettings::GetInstance()->GetHomeDir(); + + for (const auto& user : m_users.user) { + const auto user_dir = home_dir / std::to_string(user.user_id); + if (std::filesystem::exists(user_dir)) { + result.push_back(user); + } + } + + return result; } \ No newline at end of file diff --git a/src/core/user_manager.h b/src/core/user_manager.h index a782deb63..23c5de466 100644 --- a/src/core/user_manager.h +++ b/src/core/user_manager.h @@ -31,6 +31,7 @@ public: std::vector CreateDefaultUser(); bool SetDefaultUser(u32 user_id); void SetControllerPort(u32 user_id, int port); + std::vector GetValidUsers() const; Users& GetUsers() { return m_users;