// SPDX-FileCopyrightText: Copyright 2026 shadPS4 Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include #include #include "common/types.h" struct User { s32 user_id; u32 user_color; std::string user_name; int controller_port; // 1-4 }; struct Users { int default_user_id = 1; std::vector user {}; std::string commit_hash{}; }; NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(User, user_id, user_color, user_name, controller_port) NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Users, default_user_id, user, commit_hash) class UserManager { public: UserManager() = default; bool AddUser(const User& user); bool RemoveUser(s32 user_id); bool RenameUser(s32 user_id, const std::string& new_name); User* GetUserByID(s32 user_id); User* GetUserByPlayerIndex(s32 index); const std::vector& GetAllUsers() const; std::vector CreateDefaultUser(); bool SetDefaultUser(u32 user_id); User GetDefaultUser(); void SetControllerPort(u32 user_id, int port); std::vector GetValidUsers() const; Users& GetUsers() { return m_users; } const Users& GetUsers() const { return m_users; } bool Save() const; private: Users m_users; };