Skip to content

Commit

Permalink
feat: add graphics settings
Browse files Browse the repository at this point in the history
  • Loading branch information
vtx22 committed Mar 7, 2025
1 parent 5e25745 commit 6344eb4
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 9 deletions.
40 changes: 37 additions & 3 deletions src/SettingsWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ SettingsWindow::SettingsWindow(DataHandler *data_handler) : Window(ICON_FA_GEAR

void SettingsWindow::update_content()
{
show_graphics_settings();
show_downsampling_settings();

if (_settings_changed)
Expand All @@ -19,11 +20,10 @@ void SettingsWindow::show_downsampling_settings()
{
if (ImGui::CollapsingHeader("Downsampling"))
{
bool downsampling_enabled;
std::istringstream(_config_handler.ini["downsampling"]["enabled"]) >> std::boolalpha >> downsampling_enabled;
bool downsampling_enabled = _config_handler.ini["downsampling"]["enabled"] == "1";
if (ImGui::Checkbox("Enabled", &downsampling_enabled))
{
_config_handler.ini["downsampling"]["enabled"] = downsampling_enabled ? "true" : "false";
_config_handler.ini["downsampling"]["enabled"] = downsampling_enabled ? "1" : "0";
_settings_changed = true;
}

Expand Down Expand Up @@ -77,4 +77,38 @@ void SettingsWindow::show_downsampling_settings()
_settings_changed = true;
}
}
}

void SettingsWindow::show_graphics_settings()
{
if (ImGui::CollapsingHeader("Graphics"))
{
bool vsync_enabled = _config_handler.ini["graphics"]["vsync"] == "1";

if (ImGui::Checkbox("VSYNC", &vsync_enabled))
{
_config_handler.ini["graphics"]["vsync"] = vsync_enabled ? "1" : "0";
_settings_changed = true;
}

ImGui::Text("Antialiasing Level:");
ImGui::SameLine();

int antialiasing_level = std::stoi(_config_handler.ini["graphics"]["antialiasing"]);

if (ImGui::InputInt("##MaxSamples", &antialiasing_level, 0, 0))
{
if (antialiasing_level < 0)
{
antialiasing_level = 0;
}
if (antialiasing_level > 8)
{
antialiasing_level = 8;
}

_config_handler.ini["graphics"]["antialiasing"] = std::to_string(antialiasing_level);
_settings_changed = true;
}
}
}
1 change: 1 addition & 0 deletions src/SettingsWindow.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class SettingsWindow : public Window
void update_content() override;

void show_downsampling_settings();
void show_graphics_settings();

private:
bool _settings_changed = false;
Expand Down
5 changes: 3 additions & 2 deletions src/config.ini
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
[graphics]
vsync = true
antialiasing = 8
vsync = 1

[downsampling]
enabled = true
enabled = 1
mode = 1
max_samples = 100000
max_samples_type = 0
12 changes: 10 additions & 2 deletions src/sparq.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@ void SPARQ::object_init()

int SPARQ::window_init()
{
auto &config = ConfigHandler::get_instance();

sf::ContextSettings settings;
settings.antialiasingLevel = SPARQ_ANTIALIASING;
settings.antialiasingLevel = std::stoi(config.ini["graphics"]["antialiasing"]);

static sf::RenderWindow window(sf::VideoMode(1280, 720), std::string("SPARQ - ") + SPARQ_VERSION, sf::Style::Default, settings);

Expand All @@ -63,7 +65,13 @@ int SPARQ::window_init()
}

window.setFramerateLimit(SPARQ_MAX_FPS);
window.setVerticalSyncEnabled(SPARQ_VSYNC);
bool vsync_enabled = config.ini["graphics"]["vsync"] == "1";
window.setVerticalSyncEnabled(vsync_enabled);

std::cout << "Applied Graphics Settings:\n";
std::cout << " Antialiasing Level: " << settings.antialiasingLevel << "\n";
std::cout << " VSync: " << (vsync_enabled ? "Enabled" : "Disabled") << "\n";
std::cout << " FPS Limit: " << SPARQ_MAX_FPS << "\n";

BOOL USE_DARK_MODE = true;
DwmSetWindowAttribute(window.getSystemHandle(), 20, &USE_DARK_MODE, sizeof(USE_DARK_MODE));
Expand Down
2 changes: 2 additions & 0 deletions src/sparq.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
#include "sparq_config.h"
#include "sparq_types.hpp"

#include "ConfigHandler.hpp"

#include "DataHandler.hpp"

#include "ConsoleWindow.hpp"
Expand Down
2 changes: 0 additions & 2 deletions src/sparq_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
#define SPARQ_VERSION "v0.3.1"

#define SPARQ_MAX_FPS 120
#define SPARQ_VSYNC true
#define SPARQ_ANTIALIASING 8
#define SPARQ_FONT "./assets/roboto.ttf"
#define SPARQ_CONFIG_FILE "config.ini"
#define SPARQ_ICON_FILE "./assets/icon.png"
Expand Down

0 comments on commit 6344eb4

Please sign in to comment.