6#ifndef ATLASGAMEMANAGER_GAME_HPP
7#define ATLASGAMEMANAGER_GAME_HPP
16template <
typename T >
33 class Game final :
public QObject
37 std::shared_ptr< GameData >
ptr {
nullptr };
57 throw AtlasException(
"Attempted to copy an object with an invalid record id" );
58 this->moveToThread( other.thread() );
62 inline bool valid()
const {
return ptr !=
nullptr; }
89 std::filesystem::path dir,
90 std::filesystem::path executable,
91 const std::uint64_t folder_size,
92 const bool in_place );
105 template <
class Rep,
class Period >
106 inline void addPlaytime(
const std::chrono::duration< Rep, Period > time_diff )
108 addPlaytime( std::chrono::duration_cast< std::chrono::seconds >( time_diff ).count() );
122 void addPreview( std::filesystem::path path, std::uint64_t index = 0 );
129 const std::uint64_t index,
130 const bool use_thumbnail =
false );
143 const bool use_thumbnail =
false );
145 const QSize size,
const SCALE_TYPE scale_type,
const BannerType type,
const bool use_thumbnail =
false );
158 [[nodiscard]]
bool hasVersion(
const QString str )
const;
172 [[nodiscard]]
Game importRecord( QString title, QString creator, QString engine );
173 [[nodiscard]]
bool recordExists( QString title, QString creator, QString engine );
constexpr bool USE_FULLSIZE
Definition Game.hpp:26
constexpr bool USE_THUMBNAIL
Definition Game.hpp:25
constexpr RecordID INVALID_RECORD_ID
Definition Types.hpp:15
std::uint32_t RecordID
Definition Types.hpp:11
std::uint64_t F95ID
Definition Types.hpp:13
std::uint64_t AtlasID
Definition Types.hpp:12
QPixmap requestThumbnail(const BannerType type)
Get thumbnail from image. BLOCKING.
Definition banners.cpp:166
RecordID m_id
Definition Game.hpp:39
void setEngine(QString engine)
Sets the engine for the game.
Definition Game.cpp:77
const std::filesystem::path bannerPath(const BannerType type) const
Definition banners.cpp:60
const GameData * operator->() const
Used to accessing internal GameData as a const data member.
Definition Game.hpp:156
void connectF95Data(const F95ID id)
Definition Game.cpp:135
void addPreview(std::filesystem::path path, std::uint64_t index=0)
If index is zero then it will place it at the highest possible postion (starting at 1)
Definition previews.cpp:35
QFuture< QPixmap > scaledPreview(const QSize size, const SCALE_TYPE scale_type, const std::uint64_t index, const bool use_thumbnail=false)
Definition previews.cpp:92
void removeUserTag(QString str)
Definition tags.cpp:32
std::shared_ptr< GameData > ptr
Definition Game.hpp:37
bool valid() const
Returns true if ptr points to valid game data.
Definition Game.hpp:62
RecordID id() const
Returns the record id for this game.
Definition Game.hpp:65
Game(const Game &other)
Definition Game.hpp:54
Version & operator[](const QString str) const
Definition versions.cpp:95
Game & operator=(const Game &other)
Definition Game.hpp:47
void setDescription(QString description)
Sets a description to be used.
Definition Game.cpp:85
QFuture< QPixmap > preview(const std::uint64_t index, const bool use_thumbnail=false)
Definition previews.cpp:73
void addVersion(QString version_name, std::filesystem::path dir, std::filesystem::path executable, const std::uint64_t folder_size, const bool in_place)
Adds a new version. Will throw if version of same name exists.
Definition versions.cpp:10
void setBanner(std::filesystem::path path, const BannerType type)
Definition banners.cpp:21
void reorderPreviews(std::vector< std::filesystem::path > paths)
Definition previews.cpp:20
void connectAtlasData(const AtlasID id)
Connects this record to a atlas_data mapping.
Definition Game.cpp:108
void addPlaytime(const std::chrono::duration< Rep, Period > time_diff)
Template form of addPlaytime for taking in any chrono duration.
Definition Game.hpp:106
bool versionExists(const QString &str)
Definition versions.cpp:43
void addUserTag(QString str)
Definition tags.cpp:13
QFuture< QPixmap > requestPreview(const std::uint64_t index, const bool use_thumbnail=false) const
Returns a future for the preview to be loaded.
Definition banners.cpp:186
bool hasBanner(const BannerType type) const
Definition banners.cpp:16
bool hasVersion(const QString str) const
Definition versions.cpp:83
void removeVersion(const Version &info)
Removes a version from Atlas.
Definition versions.cpp:54
void setLastPlayed(const std::uint64_t)
Sets the last played timestamp.
Definition Game.cpp:100
void removePreview(const std::uint64_t index)
Definition previews.cpp:111
void addPlaytime(const std::uint64_t seconds)
Adds playtime to the playtime counter.
Definition Game.cpp:91
QFuture< QPixmap > requestBanner(const BannerType type, const bool use_thumbnail=false) const
Definition banners.cpp:66
void setTitle(QString title)
Sets the title for the game.
Definition Game.cpp:61
~Game()
Definition Game.cpp:56
void setCreator(QString creator)
Sets the creator for the game.
Definition Game.cpp:69
Representation of a game version.
Definition Version.hpp:40
Definition AtlasData.hpp:58
Definition F95Data.hpp:44
SCALE_TYPE
Definition config.hpp:219
BannerType
Definition config.hpp:245
Definition banners.cpp:15
bool recordExists(QString title, QString creator, QString engine)
Definition Game.cpp:166
RecordID fetchRecord(QString title, QString creator, QString engine)
Definition Game.cpp:172
Game importRecord(QString title, QString creator, QString engine)
imports a new record and returns it. Will return an existing record if the record already exists
Definition Game.cpp:156
Definition exceptions.hpp:17
AtlasException(const char *const msg, const std::source_location loc=std::source_location::current())
Definition exceptions.hpp:26
Definition GameData.hpp:17
InvalidRecordID(const RecordID in_id)
Definition Game.cpp:182
RecordID id
Definition Game.hpp:190
Game record
Definition Game.hpp:183
RecordAlreadyExists(Game &record_in)
Definition Game.cpp:177
RecordException(const char *const msg)
Definition Game.hpp:178