// Copyright (C) 2024-2026 NXST contributors #pragma once #include #include #include #include #include class Title { public: void init(u8 save_data_type, u64 title_id, AccountUid uid, const std::string& name, const std::string& author); std::string author() const; std::pair displayName() const; u64 id() const; std::string name() const; std::string path() const; u64 playTimeNanoseconds() const; std::string playTime() const; void playTimeNanoseconds(u64 ns); u32 lastPlayedTimestamp() const; void lastPlayedTimestamp(u32 ts); std::string fullPath(size_t index) const; void refreshDirectories(); u64 saveId() const; void saveId(u64 id); std::vector saves() const; u8 saveDataType() const; AccountUid userId() const; std::string userName() const; private: u64 m_id{0}; u64 m_save_id{0}; AccountUid m_uid{}; std::string m_user_name; std::string m_name; std::string m_safe_name; std::string m_author; std::string m_path; std::vector m_saves; std::vector m_full_save_paths; u8 m_save_data_type{0}; std::pair m_display_name; u64 m_play_time_ns{0}; u32 m_last_played_ts{0}; }; bool areTitlesLoaded(); void loadTitles(); void sortTitles(); void rotateSortMode(); void getTitle(Title& dst, AccountUid uid, size_t i); size_t getTitleCount(AccountUid uid); void refreshDirectories(u64 id); std::unordered_map getCompleteTitleList();