aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api/Config.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe/api/Config.h')
-rw-r--r--src/crepe/api/Config.h64
1 files changed, 45 insertions, 19 deletions
diff --git a/src/crepe/api/Config.h b/src/crepe/api/Config.h
index c3f9474..6b9e3ca 100644
--- a/src/crepe/api/Config.h
+++ b/src/crepe/api/Config.h
@@ -1,33 +1,30 @@
#pragma once
-#include "../util/Log.h"
+#include <string>
-namespace crepe {
+#include "../util/Log.h"
-class Config {
-private:
- Config() = default;
+#include "types.h"
-public:
- ~Config() = default;
+namespace crepe {
-public:
+/**
+ * \brief Global configuration interface
+ *
+ * This class stores engine default settings. Properties on this class are only supposed to be
+ * modified *before* execution is handed over from the game programmer to the engine (i.e. the
+ * main loop is started).
+ */
+struct Config final {
//! Retrieve handle to global Config instance
static Config & get_instance();
- // singleton
- Config(const Config &) = delete;
- Config(Config &&) = delete;
- Config & operator=(const Config &) = delete;
- Config & operator=(Config &&) = delete;
-public:
//! Logging-related settings
struct {
/**
* \brief Log level
*
- * Only messages with equal or higher severity than this value will be
- * logged.
+ * Only messages with equal or higher priority than this value will be logged.
*/
Log::Level level = Log::Level::INFO;
/**
@@ -43,8 +40,8 @@ public:
/**
* \brief Save file location
*
- * This location is used by the constructor of SaveManager, and should be
- * set before save manager functionality is attempted to be used.
+ * This location is used by the constructor of SaveManager, and should be set before save
+ * manager functionality is attempted to be used.
*/
std::string location = "save.crepe.db";
} savemgr;
@@ -56,9 +53,16 @@ public:
*
* Gravity value of game.
*/
- double gravity = 1;
+ float gravity = 10;
} physics;
+ //! default window settings
+ struct {
+ //! default screen size in pixels
+ ivec2 default_size = {1280, 720};
+ std::string window_title = "Jetpack joyride clone";
+ } window_settings;
+
//! Asset loading options
struct {
/**
@@ -72,6 +76,28 @@ public:
*/
std::string root_pattern = ".crepe-root";
} asset;
+ //! Default font options
+ struct {
+ /**
+ * \brief Default font size
+ *
+ * Using the SDL_ttf library the font size needs to be set when loading the font.
+ * This config option is the font size at which all fonts will be loaded initially.
+ *
+ */
+ unsigned int size = 16;
+ } font;
+ //! Configuration for click tolerance.
+ struct {
+ //! The maximum number of pixels the mouse can move between MouseDown and MouseUp events to be considered a click.
+ int click_tolerance = 5;
+ } input;
+
+ //! Audio system settings
+ struct {
+ //! Max amount of simultanious voices
+ unsigned int voices = 32;
+ } audio;
};
} // namespace crepe