From e0951c39a7e2e501aeb4a6dcf09f0df208ab4d97 Mon Sep 17 00:00:00 2001 From: tovjemam Date: Sat, 14 Mar 2026 22:39:53 +0100 Subject: [PATCH] Add basic settings --- src/client/app.cpp | 55 ++++++++++++++++++++++++++++++++----------- src/client/app.hpp | 5 ++++ src/server/client.cpp | 2 +- 3 files changed, 47 insertions(+), 15 deletions(-) diff --git a/src/client/app.cpp b/src/client/app.cpp index e4259e9..56c146b 100644 --- a/src/client/app.cpp +++ b/src/client/app.cpp @@ -12,12 +12,7 @@ App::App() : { std::cout << "Initializing App..." << std::endl; -#ifndef EMSCRIPTEN - audiomaster_.SetMasterVolume(1.0f); -#else - audiomaster_.SetMasterVolume(2.0f); -#endif - + ApplySettings(); AddChatMessage("Test!"); } @@ -141,7 +136,11 @@ void App::Input(game::PlayerInputType in, bool pressed, bool repeated) { if (in == game::IN_MENU && pressed) { - OpenSettings(); + if (!menu_) + OpenSettings(); + else + menu_.reset(); + return; } @@ -159,10 +158,8 @@ void App::Input(game::PlayerInputType in, bool pressed, bool repeated) void App::MouseMove(const glm::vec2& delta) { - float sensitivity = 0.002f; // Sensitivity factor for mouse movement - - float delta_yaw = -delta.x * sensitivity; - float delta_pitch = -delta.y * sensitivity; + float delta_yaw = -delta.x * sensitivity_; + float delta_pitch = -delta.y * sensitivity_; if (session_) session_->ProcessMouseMove(delta_yaw, delta_pitch); @@ -210,10 +207,10 @@ void App::DrawChat() } } -static void AddSlider(gui::Menu& menu, std::string text, int& value, int min, int max) +static void AddSlider(gui::Menu& menu, std::string text, int& value, int min, int max, std::function changed) { auto& slider = menu.Add(std::move(text)); - auto on_switch = [&slider, &value, min, max] (int v) { + auto on_switch = [&slider, &value, min, max, changed] (int v) { value += v; // clamp @@ -223,6 +220,7 @@ static void AddSlider(gui::Menu& menu, std::string text, int& value, int min, in value = max; slider.SetSelectionText(std::to_string(value)); + changed(); }; slider.SetSwitchCallback(on_switch); @@ -233,12 +231,41 @@ void App::OpenSettings() { menu_ = std::make_unique(); - AddSlider(*menu_, "jak moc to řve", volume_, 0, 100); + AddSlider(*menu_, "jak moc to řve", volume_, 0, 100, [this]{ + ApplyVolume(); + }); + AddSlider(*menu_, "agresivita krysy", sens_, 0, 100, [this]{ + ApplySensitivity(); + }); + auto& ok = menu_->Add("0k"); ok.SetClickCallback([this] { menu_.reset(); }); } +void App::ApplySettings() +{ + ApplyVolume(); + ApplySensitivity(); +} + +void App::ApplyVolume() +{ + float vol_f = static_cast(volume_) / 50.0f; + +#ifndef EMSCRIPTEN + audiomaster_.SetMasterVolume(vol_f); +#else + audiomaster_.SetMasterVolume(2.0f * vol_f); +#endif +} + +void App::ApplySensitivity() +{ + float f = static_cast(sens_) / 100.0f; + sensitivity_ = glm::mix(0.0005f, 0.0035f, f); +} + #define COL_LABEL "^ccc" #define COL_VALUE "^5ff" diff --git a/src/client/app.hpp b/src/client/app.hpp index dfeae61..ca0e020 100644 --- a/src/client/app.hpp +++ b/src/client/app.hpp @@ -57,6 +57,9 @@ private: void DrawChat(); void OpenSettings(); + void ApplySettings(); + void ApplyVolume(); + void ApplySensitivity(); void UpdateStats(); void DrawStats(); @@ -83,6 +86,8 @@ private: // settings int volume_ = 50; + int sens_ = 50; + float sensitivity_ = 0.0f; // stats float stats_time_ = 0.0f; diff --git a/src/server/client.cpp b/src/server/client.cpp index 8d70254..7c61c8e 100644 --- a/src/server/client.cpp +++ b/src/server/client.cpp @@ -85,7 +85,7 @@ bool sv::Client::ProcessLoginMsg(net::InMessage& msg) // check ver if (ver != FEKAL_VERSION) { - SendChat(std::format("^f55špatná verze {}, server je na verzi {}", ver, FEKAL_VERSION)); + SendChat(std::format("^f55máš nahovno verzi {}, server je na {}", ver, FEKAL_VERSION)); return false; }