diff options
Diffstat (limited to 'src/resources/Resources.h')
-rw-r--r-- | src/resources/Resources.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/resources/Resources.h b/src/resources/Resources.h new file mode 100644 index 0000000..194c031 --- /dev/null +++ b/src/resources/Resources.h @@ -0,0 +1,76 @@ +//======================================================================== +// dng +//------------------------------------------------------------------------ +// Copyright (c) 2022 Steph Enders <steph@senders.io> +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would +// be appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not +// be misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. +// +//======================================================================== + +#ifndef DNG_RESOURCES_H +#define DNG_RESOURCES_H + +#include <filesystem> +#include <optional> +#include <vector> + +// struct LevelInfo { +// filesystem::path dir; +// filesystem::path dngMap; +// optional<filesystem::path> procLua; +// }; +using namespace std; + +static const string FONT_TYPES[] = {".otf", ".ttf"}; +static const filesystem::path DEFAULT_LUA{"defaults.lua"}; +static const filesystem::path DNG_MAP{"dng.map"}; +static const filesystem::path PROC_LUA{"proc.lua"}; +static const char *DEFAULT_FONT = "PressStart2P-vaV7.ttf"; + +class Resources { + +protected: + shared_ptr<std::filesystem::path> font; // chosen font + shared_ptr<filesystem::path> defaultsLua; // defaults lua file + vector<filesystem::path> fonts; // all found maps + vector<filesystem::path> levels; // all found maps + virtual vector<filesystem::path> levelSearchDirs() = 0; + virtual vector<filesystem::path> defaultsSearchDirs() = 0; + virtual vector<filesystem::path> fontSearchDirs() = 0; + +public: + void loadLevels(); + void loadFontFiles(); + void loadDefaultLuaFile(); + vector<filesystem::path> getFontFiles(); + vector<filesystem::path> getLevels(); + shared_ptr<std::filesystem::path> updateFont(int idx); + shared_ptr<std::filesystem::path> getFontFile(); + shared_ptr<std::filesystem::path> getDefaultsLuaFile(); + shared_ptr<std::filesystem::path> getLevelMap(int idx); + optional<shared_ptr<std::filesystem::path>> getLevelProcLua(int idx); + /* Helper method to convert any path to a const char * + * Windows uses wchar_t so this can help provide a common way to + * interact with files + */ + virtual const char *convert_to_str(filesystem::path &path) = 0; +}; + +#endif // DNG_RESOURCES_H |