diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-11-29 13:36:27 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-29 13:36:27 +1100 |
commit | 1ef39dc0711fb960c64f6dddd133a6df0076b047 (patch) | |
tree | faaa2c861f3f166a4259c8b68abdca6a157d332a /source/frontend/StarGraphicsMenu.cpp | |
parent | 24c2820ce1ad4347717253cb5c239d70604d0974 (diff) | |
parent | 6294e9ed1c07b41ee7051c760b0f54b60cfc83ca (diff) |
Merge pull request #7 from WereTech/main
Add a camera panning speed setting
Diffstat (limited to 'source/frontend/StarGraphicsMenu.cpp')
-rw-r--r-- | source/frontend/StarGraphicsMenu.cpp | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/source/frontend/StarGraphicsMenu.cpp b/source/frontend/StarGraphicsMenu.cpp index 852a217..f1a93a9 100644 --- a/source/frontend/StarGraphicsMenu.cpp +++ b/source/frontend/StarGraphicsMenu.cpp @@ -29,9 +29,15 @@ GraphicsMenu::GraphicsMenu() { syncGui(); }); reader.registerCallback("zoomSlider", [=](Widget*) { - auto slider = fetchChild<SliderBarWidget>("zoomSlider"); - m_localChanges.set("zoomLevel", m_zoomList[slider->val()]); - Root::singleton().configuration()->set("zoomLevel", m_zoomList[slider->val()]); + auto zoomSlider = fetchChild<SliderBarWidget>("zoomSlider"); + m_localChanges.set("zoomLevel", m_zoomList[zoomSlider->val()]); + Root::singleton().configuration()->set("zoomLevel", m_zoomList[zoomSlider->val()]); + syncGui(); + }); + reader.registerCallback("cameraSpeedSlider", [=](Widget*) { + auto cameraSpeedSlider = fetchChild<SliderBarWidget>("cameraSpeedSlider"); + m_localChanges.set("cameraSpeedFactor", m_cameraSpeedList[cameraSpeedSlider->val()]); + Root::singleton().configuration()->set("cameraSpeedFactor", m_cameraSpeedList[cameraSpeedSlider->val()]); syncGui(); }); reader.registerCallback("speechBubbleCheckbox", [=](Widget*) { @@ -81,11 +87,13 @@ GraphicsMenu::GraphicsMenu() { m_resList = jsonToVec2UList(assets->json("/interface/windowconfig/graphicsmenu.config:resolutionList")); m_zoomList = jsonToFloatList(assets->json("/interface/windowconfig/graphicsmenu.config:zoomList")); + m_cameraSpeedList = jsonToFloatList(assets->json("/interface/windowconfig/graphicsmenu.config:cameraSpeedList")); reader.construct(paneLayout, this); fetchChild<SliderBarWidget>("resSlider")->setRange(0, m_resList.size() - 1, 1); fetchChild<SliderBarWidget>("zoomSlider")->setRange(0, m_zoomList.size() - 1, 1); + fetchChild<SliderBarWidget>("cameraSpeedSlider")->setRange(0, m_cameraSpeedList.size() - 1, 1); initConfig(); syncGui(); @@ -118,6 +126,7 @@ void GraphicsMenu::toggleFullscreen() { StringList const GraphicsMenu::ConfigKeys = { "fullscreenResolution", "zoomLevel", + "cameraSpeedFactor", "speechBubbles", "interactiveHighlight", "fullscreen", @@ -154,13 +163,23 @@ void GraphicsMenu::syncGui() { auto zoomIt = std::lower_bound(m_zoomList.begin(), m_zoomList.end(), m_localChanges.get("zoomLevel").toFloat()); if (zoomIt != m_zoomList.end()) { size_t zoomIndex = zoomIt - m_zoomList.begin(); - zoomIndex = std::min(zoomIndex, m_resList.size() - 1); + zoomIndex = std::min(zoomIndex, m_zoomList.size() - 1); zoomSlider->setVal(zoomIndex, false); } else { zoomSlider->setVal(m_zoomList.size() - 1); } fetchChild<LabelWidget>("zoomValueLabel")->setText(strf("{}x", m_localChanges.get("zoomLevel").toFloat())); + auto cameraSpeedSlider = fetchChild<SliderBarWidget>("cameraSpeedSlider"); + auto speedIt = std::lower_bound(m_cameraSpeedList.begin(), m_cameraSpeedList.end(), m_localChanges.get("cameraSpeedFactor").toFloat()); + if (speedIt != m_cameraSpeedList.end()) { + size_t speedIndex = speedIt - m_cameraSpeedList.begin(); + speedIndex = std::min(speedIndex, m_cameraSpeedList.size() - 1); + cameraSpeedSlider->setVal(speedIndex, false); + } else { + cameraSpeedSlider->setVal(m_cameraSpeedList.size() - 1); + } + fetchChild<LabelWidget>("cameraSpeedValueLabel")->setText(strf("{}x", m_localChanges.get("cameraSpeedFactor").toFloat())); fetchChild<ButtonWidget>("speechBubbleCheckbox")->setChecked(m_localChanges.get("speechBubbles").toBool()); fetchChild<ButtonWidget>("interactiveHighlightCheckbox")->setChecked(m_localChanges.get("interactiveHighlight").toBool()); |