From 0b41dd2661fe9a92b79ab21c3c762ddaab7c6a2e Mon Sep 17 00:00:00 2001 From: Daniel Scharrer Date: Thu, 26 Oct 2017 21:19:30 +0200 Subject: [PATCH] Config: Re-add gamma option Gamma is only changed while fullscreen. This partially reverts commit 3ad44dc. Implements: feature request #254 --- src/core/ArxGame.cpp | 1 + src/core/Config.cpp | 6 +++++- src/core/Config.h | 1 + src/gui/MenuPublic.cpp | 5 +++++ src/gui/MenuPublic.h | 1 + 5 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/core/ArxGame.cpp b/src/core/ArxGame.cpp index ce24773999..3eca46f29c 100644 --- a/src/core/ArxGame.cpp +++ b/src/core/ArxGame.cpp @@ -803,6 +803,7 @@ bool ArxGame::initGame() ARXMenu_Options_Video_SetFogDistance(config.video.fogDistance); ARXMenu_Options_Video_SetDetailsQuality(config.video.levelOfDetail); + ARXMenu_Options_Video_SetGamma(config.video.gamma); ARXMenu_Options_Audio_SetMasterVolume(config.audio.volume); ARXMenu_Options_Audio_SetSfxVolume(config.audio.sfxVolume); ARXMenu_Options_Audio_SetSpeechVolume(config.audio.speechVolume); diff --git a/src/core/Config.cpp b/src/core/Config.cpp index 4d2cb758a5..932704de21 100644 --- a/src/core/Config.cpp +++ b/src/core/Config.cpp @@ -109,6 +109,7 @@ const bool allowConsole = false; #endif const float + gamma = 5.f, hudScale = 0.5f; const ActionKey actions[NUM_ACTION_KEY] = { @@ -184,6 +185,7 @@ const std::string fullscreen = "full_screen", levelOfDetail = "others_details", fogDistance = "fog", + gamma = "gamma", antialiasing = "antialiasing", vsync = "vsync", fpsLimit = "fps_limit", @@ -410,6 +412,7 @@ bool Config::save() { writer.writeKey(Key::fullscreen, video.fullscreen); writer.writeKey(Key::levelOfDetail, video.levelOfDetail); writer.writeKey(Key::fogDistance, video.fogDistance); + writer.writeKey(Key::gamma, video.gamma); writer.writeKey(Key::antialiasing, video.antialiasing); writer.writeKey(Key::vsync, video.vsync); writer.writeKey(Key::fpsLimit, video.fpsLimit); @@ -543,7 +546,8 @@ bool Config::init(const fs::path & file) { } video.fullscreen = reader.getKey(Section::Video, Key::fullscreen, Default::fullscreen); video.levelOfDetail = reader.getKey(Section::Video, Key::levelOfDetail, Default::levelOfDetail); - video.fogDistance = reader.getKey(Section::Video, Key::fogDistance, Default::fogDistance);; + video.fogDistance = reader.getKey(Section::Video, Key::fogDistance, Default::fogDistance); + video.gamma = reader.getKey(Section::Video, Key::gamma, Default::gamma); video.antialiasing = reader.getKey(Section::Video, Key::antialiasing, Default::antialiasing); int vsync = reader.getKey(Section::Video, Key::vsync, Default::vsync); video.vsync = glm::clamp(vsync, -1, 1); diff --git a/src/core/Config.h b/src/core/Config.h index 5df96cf8a2..0f748d26a4 100644 --- a/src/core/Config.h +++ b/src/core/Config.h @@ -134,6 +134,7 @@ class Config { bool fullscreen; int levelOfDetail; float fogDistance; + float gamma; bool antialiasing; int vsync; int fpsLimit; diff --git a/src/gui/MenuPublic.cpp b/src/gui/MenuPublic.cpp index 301248b7d7..5948005d79 100644 --- a/src/gui/MenuPublic.cpp +++ b/src/gui/MenuPublic.cpp @@ -139,6 +139,11 @@ void ARXMenu_Options_Video_SetDetailsQuality(int _iQuality) { } } +void ARXMenu_Options_Video_SetGamma(float gamma) { + config.video.gamma = glm::clamp(gamma, 0.f, 10.f); + mainApp->getWindow()->setGamma(1.f + (gamma / 5.f - 1.f) * 0.5f); +} + void ARXMenu_Options_Audio_SetMasterVolume(float volume) { config.audio.volume = glm::clamp(volume, 0.f, 10.f); diff --git a/src/gui/MenuPublic.h b/src/gui/MenuPublic.h index 19594644a7..852fcec982 100644 --- a/src/gui/MenuPublic.h +++ b/src/gui/MenuPublic.h @@ -53,6 +53,7 @@ ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA. void ARXMenu_Options_Video_SetFogDistance(float distance); void ARXMenu_Options_Video_SetDetailsQuality(int lod); +void ARXMenu_Options_Video_SetGamma(float gamma); // Audio options