summaryrefslogtreecommitdiff
path: root/src/resources/Resources.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/resources/Resources.h')
-rw-r--r--src/resources/Resources.h76
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