aboutsummaryrefslogtreecommitdiff
path: root/oop2eindopdr/PokemonCard.h
diff options
context:
space:
mode:
Diffstat (limited to 'oop2eindopdr/PokemonCard.h')
-rw-r--r--oop2eindopdr/PokemonCard.h22
1 files changed, 19 insertions, 3 deletions
diff --git a/oop2eindopdr/PokemonCard.h b/oop2eindopdr/PokemonCard.h
index 1b9721a..a19ef60 100644
--- a/oop2eindopdr/PokemonCard.h
+++ b/oop2eindopdr/PokemonCard.h
@@ -4,13 +4,18 @@
#include <string>
#include <vector>
+#include "CacheManager.h"
+
/** @brief single pokemon card */
class PokemonCard {
private:
nlohmann::json raw_data;
+ virtual void raw_load_json(nlohmann::json raw_data);
+ virtual void raw_load_cache(const char* cache_path);
+
public:
- PokemonCard();
+ PokemonCard(CacheManager* cache_ref);
virtual ~PokemonCard();
/** @brief string stream output (for printing card) */
@@ -30,7 +35,18 @@ public:
/** @brief download images */
virtual void download_files();
- static PokemonCard* from_json(nlohmann::json raw_data);
- static PokemonCard* from_cache(const char* card_path);
+ struct from_json; // named constructors (defined below)
+ struct from_cache;
};
+struct PokemonCard::from_json : public PokemonCard {
+ from_json(CacheManager* cache_ref, nlohmann::json json_data) : PokemonCard(cache_ref) {
+ PokemonCard::raw_load_json(json_data);
+ }
+};
+
+struct PokemonCard::from_cache : public PokemonCard {
+ from_cache(CacheManager* cache_ref, std::string cache_path) : PokemonCard(cache_ref) {
+ PokemonCard::raw_load_cache(cache_path.c_str());
+ }
+};