#pragma once
#include <string>

#define USER_SETTINGS_TABLE         \
    USER_SETTING(draw_gizmos, bool, true) \
    USER_SETTING(profile_editor, bool, false) \
    USER_SETTING(profile_enabled, bool, true) \
    USER_SETTING(show_color_correction_window, bool, false) \
    USER_SETTING(show_profiler_window, bool, false) \
    USER_SETTING(lighting_enabled, bool, false) \
    USER_SETTING(profile_deep, bool, false) \
    USER_SETTING(show_asset_window, bool, false) \
    USER_SETTING(profile_gpu, bool, false) \
    USER_SETTING(show_performance_window, bool, false) \
    USER_SETTING(show_audio_window, bool, false) 

    

struct UserSettings {
#define USER_SETTING(name, type, default_val) type name = default_val;
    USER_SETTINGS_TABLE
#undef USER_SETTING
};

struct EngineConfig {
    std::string version;
    std::string gl_version;
    int gl_maxLight;

    UserSettings settings;

    void SaveToFile();
    void LoadFromFile();
};

extern EngineConfig g_engineConfig;

