From 52f607b126286b012fbef8cb571335ee064fa186 Mon Sep 17 00:00:00 2001 From: mschiller890 Date: Fri, 20 Mar 2026 23:20:37 +0100 Subject: [PATCH] Made some changes to the GUI scale slider. Should be waaaaaaay better now --- data/lang/en_US.lang | 3 ++- project/android/assets/lang/en_US.lang | 3 ++- project/android_java/assets/lang/en_US.lang | 4 +++- src/client/Minecraft.cpp | 5 +++-- src/client/gui/components/OptionsGroup.cpp | 10 ++++----- src/client/gui/components/OptionsItem.cpp | 24 ++++++++++++++++++--- src/client/gui/components/OptionsItem.h | 5 +++-- src/client/gui/components/Slider.cpp | 12 ++++++++--- src/client/gui/components/Slider.h | 1 + 9 files changed, 49 insertions(+), 18 deletions(-) diff --git a/data/lang/en_US.lang b/data/lang/en_US.lang index f810e85..d4b83d5 100755 --- a/data/lang/en_US.lang +++ b/data/lang/en_US.lang @@ -182,9 +182,10 @@ options.graphics.fast=Fast options.guiScale=GUI Scale options.guiScale.auto=Auto options.guiScale.small=Small -options.guiScale.normal=Normal +options.guiScale.medium=Medium options.guiScale.large=Large options.guiScale.larger=Larger +options.guiScale.largest=Largest options.advancedOpengl=Advanced OpenGL options.renderClouds=Clouds options.farWarning1=A 64 bit Java installation is recommended diff --git a/project/android/assets/lang/en_US.lang b/project/android/assets/lang/en_US.lang index e6bfe4c..fedae1c 100755 --- a/project/android/assets/lang/en_US.lang +++ b/project/android/assets/lang/en_US.lang @@ -168,9 +168,10 @@ options.graphics.fast=Fast options.guiScale=GUI Scale options.guiScale.auto=Auto options.guiScale.small=Small -options.guiScale.normal=Normal +options.guiScale.medium=Medium options.guiScale.large=Large options.guiScale.larger=Larger +options.guiScale.largest=Largest options.advancedOpengl=Advanced OpenGL options.renderClouds=Clouds options.farWarning1=A 64 bit Java installation is recommended diff --git a/project/android_java/assets/lang/en_US.lang b/project/android_java/assets/lang/en_US.lang index 95ebf79..8713541 100755 --- a/project/android_java/assets/lang/en_US.lang +++ b/project/android_java/assets/lang/en_US.lang @@ -168,8 +168,10 @@ options.graphics.fast=Fast options.guiScale=GUI Scale options.guiScale.auto=Auto options.guiScale.small=Small -options.guiScale.normal=Normal +options.guiScale.medium=Medium options.guiScale.large=Large +options.guiScale.larger=Larger +options.guiScale.largest=Largest options.advancedOpengl=Advanced OpenGL options.renderClouds=Clouds options.farWarning1=A 64 bit Java installation is recommended diff --git a/src/client/Minecraft.cpp b/src/client/Minecraft.cpp index 926ff10..5b03708 100755 --- a/src/client/Minecraft.cpp +++ b/src/client/Minecraft.cpp @@ -1160,12 +1160,13 @@ void Minecraft::setSize(int w, int h) { // determine gui scale, optionally overriding auto if (guiScale != 0) { - // manual selection: 1->small, 2->normal, 3->large, 4->larger + // manual selection: 1->small, 2->medium, 3->large, 4->larger, 5->largest switch (guiScale) { case 1: Gui::GuiScale = 2.0f; break; case 2: Gui::GuiScale = 3.0f; break; case 3: Gui::GuiScale = 4.0f; break; - case 4: Gui::GuiScale = 5.0f; break; // bigger than large + case 4: Gui::GuiScale = 5.0f; break; + case 5: Gui::GuiScale = 6.0f; break; default: Gui::GuiScale = 1.0f; break; // auto } } else { diff --git a/src/client/gui/components/OptionsGroup.cpp b/src/client/gui/components/OptionsGroup.cpp index 89e7915..54212d5 100755 --- a/src/client/gui/components/OptionsGroup.cpp +++ b/src/client/gui/components/OptionsGroup.cpp @@ -65,7 +65,7 @@ void OptionsGroup::createToggle(OptionId optId, Minecraft* minecraft ) { std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId()); - OptionsItem* item = new OptionsItem(itemLabel, element); + OptionsItem* item = new OptionsItem(optId, itemLabel, element); addChild(item); setupPositions(); @@ -77,7 +77,7 @@ void OptionsGroup::createProgressSlider(OptionId optId, Minecraft* minecraft ) { element->height = 20; std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId()); - OptionsItem* item = new OptionsItem(itemLabel, element); + OptionsItem* item = new OptionsItem(optId, itemLabel, element); addChild(item); setupPositions(); } @@ -87,7 +87,7 @@ void OptionsGroup::createStepSlider(OptionId optId, Minecraft* minecraft ) { element->width = 100; element->height = 20; std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId()); - OptionsItem* item = new OptionsItem(itemLabel, element); + OptionsItem* item = new OptionsItem(optId, itemLabel, element); addChild(item); setupPositions(); } @@ -98,7 +98,7 @@ void OptionsGroup::createTextbox(OptionId optId, Minecraft* minecraft) { element->height = 20; std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId()); - OptionsItem* item = new OptionsItem(itemLabel, element); + OptionsItem* item = new OptionsItem(optId, itemLabel, element); addChild(item); setupPositions(); } @@ -109,7 +109,7 @@ void OptionsGroup::createKey(OptionId optId, Minecraft* minecraft) { element->height = 20; std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId()); - OptionsItem* item = new OptionsItem(itemLabel, element); + OptionsItem* item = new OptionsItem(optId, itemLabel, element); addChild(item); setupPositions(); } \ No newline at end of file diff --git a/src/client/gui/components/OptionsItem.cpp b/src/client/gui/components/OptionsItem.cpp index 39049e6..1ee48e3 100755 --- a/src/client/gui/components/OptionsItem.cpp +++ b/src/client/gui/components/OptionsItem.cpp @@ -1,9 +1,11 @@ #include "OptionsItem.h" #include "../../Minecraft.h" +#include "../../../locale/I18n.h" #include "../../../util/Mth.h" -OptionsItem::OptionsItem( std::string label, GuiElement* element ) +OptionsItem::OptionsItem( OptionId optionId, std::string label, GuiElement* element ) : GuiElementContainer(false, true, 0, 0, 24, 12), - label(label) { + m_optionId(optionId), + m_label(label) { addChild(element); } @@ -19,6 +21,22 @@ void OptionsItem::setupPositions() { void OptionsItem::render( Minecraft* minecraft, int xm, int ym ) { int yOffset = (height - 8) / 2; - minecraft->font->draw(label, (float)x, (float)y + yOffset, 0x909090, false); + std::string text = m_label; + if (m_optionId == OPTIONS_GUI_SCALE) { + int value = minecraft->options.getIntValue(OPTIONS_GUI_SCALE); + std::string scaleText; + switch (value) { + case 0: scaleText = I18n::get("options.guiScale.auto"); break; + case 1: scaleText = I18n::get("options.guiScale.small"); break; + case 2: scaleText = I18n::get("options.guiScale.medium"); break; + case 3: scaleText = I18n::get("options.guiScale.large"); break; + case 4: scaleText = I18n::get("options.guiScale.larger"); break; + case 5: scaleText = I18n::get("options.guiScale.largest"); break; + default: scaleText = I18n::get("options.guiScale.auto"); break; + } + text += ": " + scaleText; + } + + minecraft->font->draw(text, (float)x, (float)y + yOffset, 0x909090, false); super::render(minecraft, xm, ym); } \ No newline at end of file diff --git a/src/client/gui/components/OptionsItem.h b/src/client/gui/components/OptionsItem.h index 82b8614..5add1ef 100755 --- a/src/client/gui/components/OptionsItem.h +++ b/src/client/gui/components/OptionsItem.h @@ -15,12 +15,13 @@ class OptionsItem: public GuiElementContainer { typedef GuiElementContainer super; public: - OptionsItem(std::string label, GuiElement* element); + OptionsItem(OptionId optionId, std::string label, GuiElement* element); virtual void render(Minecraft* minecraft, int xm, int ym); void setupPositions(); private: - std::string label; + OptionId m_optionId; + std::string m_label; }; #endif /*NET_MINECRAFT_CLIENT_GUI_COMPONENTS__OptionsItem_H__*/ diff --git a/src/client/gui/components/Slider.cpp b/src/client/gui/components/Slider.cpp index 68dba4a..27a3b36 100755 --- a/src/client/gui/components/Slider.cpp +++ b/src/client/gui/components/Slider.cpp @@ -2,6 +2,7 @@ #include "../../Minecraft.h" #include "../../renderer/Textures.h" #include "../Screen.h" +#include "../../../locale/I18n.h" #include "../../../util/Mth.h" #include #include @@ -21,7 +22,7 @@ void Slider::render( Minecraft* minecraft, int xm, int ym ) { if (m_numSteps > 2) { int stepDistance = barWidth / (m_numSteps-1); - for(int a = 0; a <= m_numSteps; ++a) { + for(int a = 0; a < m_numSteps; ++a) { int renderSliderStepPosX = xSliderStart + a * stepDistance + 1; fill(renderSliderStepPosX - 1, ySliderStart - 2, renderSliderStepPosX + 1, ySliderEnd + 2, 0xff606060); } @@ -64,15 +65,20 @@ SliderFloat::SliderFloat(Minecraft* minecraft, OptionId option) SliderInt::SliderInt(Minecraft* minecraft, OptionId option) : Slider(option), m_option(dynamic_cast(minecraft->options.getOpt(option))) { - m_numSteps = m_option->getMax() - m_option->getMin(); + m_numSteps = m_option->getMax() - m_option->getMin() + 1; m_percentage = float(m_option->get() - m_option->getMin()) / (m_numSteps-1); } +void SliderInt::render( Minecraft* minecraft, int xm, int ym ) { + Slider::render(minecraft, xm, ym); +} + void SliderInt::mouseReleased( Minecraft* minecraft, int x, int y, int buttonNum ) { Slider::mouseReleased(minecraft, x, y, buttonNum); if (pointInside(x, y)) { - int curStep = Mth::floor(m_percentage * (m_numSteps-1)); + int curStep = int(m_percentage * (m_numSteps-1) + 0.5f); + curStep = Mth::clamp(curStep + m_option->getMin(), m_option->getMin(), m_option->getMax()); m_percentage = float(curStep - m_option->getMin()) / (m_numSteps-1); minecraft->options.set(m_optId, curStep); diff --git a/src/client/gui/components/Slider.h b/src/client/gui/components/Slider.h index ef57450..73c009a 100755 --- a/src/client/gui/components/Slider.h +++ b/src/client/gui/components/Slider.h @@ -38,6 +38,7 @@ class SliderInt : public Slider { public: SliderInt(Minecraft* minecraft, OptionId option); + virtual void render( Minecraft* minecraft, int xm, int ym ) override; virtual void mouseReleased( Minecraft* minecraft, int x, int y, int buttonNum ) override; protected: