Atlas Game Manager
A game manager for f95 and dlsite written in c++
Loading...
Searching...
No Matches
GameData.hpp
Go to the documentation of this file.
1//
2// Created by kj16609 on 1/13/23.
3//
4
5#pragma once
6#ifndef ATLAS_RECORD_HPP
7#define ATLAS_RECORD_HPP
8
9#include "Version.hpp"
10#include "core/Types.hpp"
13
14namespace atlas::records
15{
16 struct GameData
17 {
18 GameData() = delete;
19 GameData( GameData&& other ) = delete;
20
22 QString m_title {};
23 QString m_creator {};
24 QString m_engine {};
25 std::uint64_t m_last_played { 0 };
26 std::uint64_t m_total_playtime { 0 };
27 std::uint64_t m_preview_count { 0 };
28 std::vector< QString > m_tags {};
29 QString m_description {};
30 std::vector< Version > m_versions {};
31 std::array< std::filesystem::path, BannerType::SENTINEL > m_banner_paths {};
32 std::vector< std::filesystem::path > m_preview_paths {};
33
34 std::optional< remote::AtlasRemoteData > atlas_data { std::nullopt };
35 std::optional< remote::F95RemoteData > f95_data { std::nullopt };
36
37 std::recursive_mutex m_mtx {};
38
39 //Some helpers for commonly used data sets.
40 const Version& getVersion( const QString ) const;
41
43
47 GameData( const RecordID id );
48
56 explicit GameData( QString title, QString creator, QString engine );
57
58 friend struct RecordAlreadyExists;
59 friend class Game;
60 };
61
63 RecordID recordID( const QString& title, const QString& creator, const QString& engine );
64
65} // namespace atlas::records
66
67#endif //ATLAS_RECORD_HPP
constexpr RecordID INVALID_RECORD_ID
Definition Types.hpp:15
std::uint32_t RecordID
Definition Types.hpp:11
Representation of a game version.
Definition Version.hpp:40
Definition banners.cpp:15
RecordID recordID(const QString &title, const QString &creator, const QString &engine)
Returns 0 if there is not record with this data.
Definition GameData.cpp:95
const Version & getVersion(const QString) const
Definition GameData.cpp:87
std::vector< std::filesystem::path > m_preview_paths
Definition GameData.hpp:32
std::optional< remote::F95RemoteData > f95_data
Definition GameData.hpp:35
RecordID m_game_id
Definition GameData.hpp:21
std::vector< QString > m_tags
Definition GameData.hpp:28
std::uint64_t m_last_played
Definition GameData.hpp:25
std::recursive_mutex m_mtx
Definition GameData.hpp:37
QString m_creator
Definition GameData.hpp:23
std::uint64_t m_total_playtime
Definition GameData.hpp:26
friend class Game
Definition GameData.hpp:59
std::vector< Version > m_versions
Definition GameData.hpp:30
QString m_title
Definition GameData.hpp:22
std::optional< remote::AtlasRemoteData > atlas_data
Definition GameData.hpp:34
QString m_engine
Definition GameData.hpp:24
QString m_description
Definition GameData.hpp:29
std::uint64_t m_preview_count
Definition GameData.hpp:27
friend struct RecordAlreadyExists
Definition GameData.hpp:58
GameData(GameData &&other)=delete
std::array< std::filesystem::path, BannerType::SENTINEL > m_banner_paths
Definition GameData.hpp:31