// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include "common/common_funcs.h" #include "common/common_types.h" #include // TODO(crueter): Extract this into frontend_common namespace Service::Account { class ProfileManager; } namespace PlayTime { using ProgramId = u64; using PlayTime = u64; using PlayTimeDatabase = std::map; class PlayTimeManager { public: explicit PlayTimeManager(); ~PlayTimeManager(); YUZU_NON_COPYABLE(PlayTimeManager); YUZU_NON_MOVEABLE(PlayTimeManager); u64 GetPlayTime(u64 program_id) const; void ResetProgramPlayTime(u64 program_id); void SetProgramId(u64 program_id); void SetPlayTime(u64 program_id, u64 play_time); void Start(); void Stop(); private: void AutoTimestamp(std::stop_token stop_token); void Save(); PlayTimeDatabase database; u64 running_program_id; std::jthread play_time_thread; }; } // namespace PlayTime