|
13 | 13 | #include "Geode/cocos/sprite_nodes/CCSprite.h" |
14 | 14 | #include "Geode/loader/SettingV3.hpp" |
15 | 15 | #include "Geode/ui/Layout.hpp" |
| 16 | +#include "Geode/ui/ScrollLayer.hpp" |
| 17 | +#include "Geode/ui/Scrollbar.hpp" |
16 | 18 |
|
17 | 19 | using namespace geode::prelude; |
18 | 20 | using namespace horrible::prelude; |
@@ -133,19 +135,13 @@ bool OptionMenu::init() { |
133 | 135 |
|
134 | 136 | m_mainLayer->addChild(categoryListBg); |
135 | 137 |
|
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 | | - |
142 | 138 | // 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); |
144 | 140 | m_impl->categoryList->setID("categories-list"); |
145 | 141 | m_impl->categoryList->setAnchorPoint({0.5, 0.5}); |
146 | 142 | m_impl->categoryList->ignoreAnchorPointForPosition(false); |
147 | 143 | m_impl->categoryList->setPosition(categoryListBg->getPosition()); |
148 | | - m_impl->categoryList->m_contentLayer->setLayout(layoutCategories); |
| 144 | + m_impl->categoryList->m_contentLayer->setLayout(ScrollLayer::createDefaultListLayout()); |
149 | 145 |
|
150 | 146 | auto cats = options::getAllCategories(); // mrrp meow |
151 | 147 | std::vector<std::string> sortedCats(cats.begin(), cats.end()); |
@@ -177,32 +173,32 @@ bool OptionMenu::init() { |
177 | 173 | // Add a background sprite to the popup |
178 | 174 | auto optionListBg = NineSlice::create(themes::square); |
179 | 175 | 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}); |
182 | 178 | optionListBg->setOpacity(50); |
183 | 179 |
|
184 | 180 | m_mainLayer->addChild(optionListBg); |
185 | 181 |
|
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 | | - |
192 | 182 | // 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}); |
194 | 184 | m_impl->optionList->setID("options-list"); |
195 | 185 | m_impl->optionList->setAnchorPoint({0.5, 0.5}); |
196 | 186 | m_impl->optionList->ignoreAnchorPointForPosition(false); |
197 | 187 | 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()}); |
199 | 193 |
|
200 | 194 | m_mainLayer->addChild(m_impl->optionList, 9); |
| 195 | + m_mainLayer->addChild(optionListScroll); |
201 | 196 |
|
202 | 197 | // 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"); |
204 | 199 | 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}); |
206 | 202 |
|
207 | 203 | m_impl->searchInput->setCallback([this](std::string_view str) { |
208 | 204 | m_impl->searchText = str; |
|
0 commit comments