Skip to content

Commit 19dbeae

Browse files
committed
improve option menu
1 parent 9f69d46 commit 19dbeae

2 files changed

Lines changed: 17 additions & 20 deletions

File tree

src/main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ inline static std::vector<Hook*> floatingBtnHooks;
9797
if (auto fb = OptionMenuButton::get()) fb->setTheme(std::move(value));
9898
});
9999

100+
// TODO: host custom branding image in mod dev branding server for this mod
100101
(void)branding::registerBrand(GEODE_MOD_ID, "https://github.com/DumbCaveSpider/HorribleIdeas/blob/main/logo.png?raw=true", branding::Type::URL);
101102
};
102103

src/menu/src/OptionMenu.cpp

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
#include "Geode/cocos/sprite_nodes/CCSprite.h"
1414
#include "Geode/loader/SettingV3.hpp"
1515
#include "Geode/ui/Layout.hpp"
16+
#include "Geode/ui/ScrollLayer.hpp"
17+
#include "Geode/ui/Scrollbar.hpp"
1618

1719
using namespace geode::prelude;
1820
using namespace horrible::prelude;
@@ -133,19 +135,13 @@ bool OptionMenu::init() {
133135

134136
m_mainLayer->addChild(categoryListBg);
135137

136-
auto layoutCategories = ColumnLayout::create()
137-
->setGap(2.5f)
138-
->setAxisReverse(true) // Top to bottom
139-
->setAxisAlignment(AxisAlignment::End)
140-
->setAutoGrowAxis(categoryListBg->getScaledContentHeight() - 8.75f);
141-
142138
// scroll layer
143-
m_impl->categoryList = ScrollLayer::create({categoryListBg->getScaledContentWidth() - 8.75f, categoryListBg->getScaledContentHeight() - 8.75f});
139+
m_impl->categoryList = ScrollLayer::create(categoryListBg->getScaledContentSize() - 7.5f);
144140
m_impl->categoryList->setID("categories-list");
145141
m_impl->categoryList->setAnchorPoint({0.5, 0.5});
146142
m_impl->categoryList->ignoreAnchorPointForPosition(false);
147143
m_impl->categoryList->setPosition(categoryListBg->getPosition());
148-
m_impl->categoryList->m_contentLayer->setLayout(layoutCategories);
144+
m_impl->categoryList->m_contentLayer->setLayout(ScrollLayer::createDefaultListLayout());
149145

150146
auto cats = options::getAllCategories(); // mrrp meow
151147
std::vector<std::string> sortedCats(cats.begin(), cats.end());
@@ -177,32 +173,32 @@ bool OptionMenu::init() {
177173
// Add a background sprite to the popup
178174
auto optionListBg = NineSlice::create(themes::square);
179175
optionListBg->setAnchorPoint({0.5, 0.5});
180-
optionListBg->setPosition({(mainLayerSize.width / 2.f) - 77.5f, (mainLayerSize.height / 2.f) - 32.5f});
181-
optionListBg->setContentSize({(mainLayerSize.width / 1.5f) - 20.f, mainLayerSize.height - 85.f});
176+
optionListBg->setPosition({(mainLayerSize.width / 2.f) - 82.5f, (mainLayerSize.height / 2.f) - 30.f});
177+
optionListBg->setContentSize({(mainLayerSize.width / 1.5f) - 35.f, mainLayerSize.height - 82.5f});
182178
optionListBg->setOpacity(50);
183179

184180
m_mainLayer->addChild(optionListBg);
185181

186-
auto layoutOptions = ColumnLayout::create()
187-
->setGap(3.75f)
188-
->setAxisReverse(true) // Top to bottom
189-
->setAxisAlignment(AxisAlignment::End)
190-
->setAutoGrowAxis(optionListBg->getScaledContentHeight() - 10.f);
191-
192182
// scroll layer
193-
m_impl->optionList = ScrollLayer::create({optionListBg->getScaledContentWidth() - 10.f, optionListBg->getScaledContentHeight() - 10.f});
183+
m_impl->optionList = ScrollLayer::create({optionListBg->getScaledContentWidth() - 8.75f, optionListBg->getScaledContentHeight() - 10.f});
194184
m_impl->optionList->setID("options-list");
195185
m_impl->optionList->setAnchorPoint({0.5, 0.5});
196186
m_impl->optionList->ignoreAnchorPointForPosition(false);
197187
m_impl->optionList->setPosition(optionListBg->getPosition());
198-
m_impl->optionList->m_contentLayer->setLayout(layoutOptions);
188+
m_impl->optionList->m_contentLayer->setLayout(ScrollLayer::createDefaultListLayout(3.75f));
189+
190+
auto optionListScroll = Scrollbar::create(m_impl->optionList);
191+
optionListScroll->setID("option-list-scrollbar");
192+
optionListScroll->setPosition({optionListBg->getPositionX() + (optionListBg->getScaledContentWidth() / 1.875f), optionListBg->getPositionY()});
199193

200194
m_mainLayer->addChild(m_impl->optionList, 9);
195+
m_mainLayer->addChild(optionListScroll);
201196

202197
// add search bar
203-
m_impl->searchInput = TextInput::create(optionListBg->getScaledContentWidth(), "Search...", "bigFont.fnt");
198+
m_impl->searchInput = TextInput::create(optionListBg->getScaledContentWidth() + 11.25f, "Search...", "bigFont.fnt");
204199
m_impl->searchInput->setID("search-input");
205-
m_impl->searchInput->setPosition({optionListBg->getPositionX(), mainLayerSize.height - 52.5f});
200+
m_impl->searchInput->setAnchorPoint({0, 0.5});
201+
m_impl->searchInput->setPosition({10.f, mainLayerSize.height - 51.25f});
206202

207203
m_impl->searchInput->setCallback([this](std::string_view str) {
208204
m_impl->searchText = str;

0 commit comments

Comments
 (0)