diff options
Diffstat (limited to 'src/utils.h')
-rw-r--r-- | src/utils.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/utils.h b/src/utils.h new file mode 100644 index 0000000..f7366dc --- /dev/null +++ b/src/utils.h @@ -0,0 +1,54 @@ +#pragma once +#include "json.hpp" +#include <string> +#include <vector> +#include <map> +#include <sstream> + + +namespace utils { + nlohmann::json loadJson(const std::string& path); + + void saveJson(const nlohmann::json& data, const std::string& path); + + template<typename Container> std::string join(Container parts, std::string joiner) { + std::stringstream out; + bool isFirst = true; + for(std::string p : parts) { + if(! isFirst) { + out << joiner; + } + isFirst = false; + out << p; + } + return out.str(); + } + + const std::map<std::string, int> cpValue { + {"cp", 1}, + {"sp", 10}, + {"ep", 50}, + {"gp", 100}, + {"pp", 1000} + }; + + // Accepts coins formatted "X Yp" where X is an integer and Y is any of c, s, e, g, p. + int coins2copper(const std::string& coins); + + // Greedily selects highest coin values to minimize total number of coins + // Returns a vector of pairs mapping coin type to coint + std::vector<std::pair<std::string, int>> copper2coins(int coppers); + + std::string getCostString(int coppers); + + // Recursively loads all .json files under directory + /*std::vector<Item> loadAll(std::string directory) { + std::vector<Item> items; + for(auto path : std::filesystem::recursive_directory_iterator(directory)) { + if(path.path().extension() == ".json") { + items.push_back(Item::instance(loadJson(path.path()))); + } + } + return items; + }*/ +} |