diff options
Diffstat (limited to 'oop2eindopdr/PokemonCard.h')
-rw-r--r-- | oop2eindopdr/PokemonCard.h | 22 |
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()); + } +}; |