add a bunch of layouts and ids

This commit is contained in:
HJfod 2023-02-11 21:13:35 +02:00
parent eb10eca6e5
commit ef9e741bf9
4 changed files with 119 additions and 43 deletions

View file

@ -6,35 +6,38 @@
USE_GEODE_NAMESPACE();
template<class... Args>
static void reorderButtons(Args... args) {
int ooa = 0;
for (auto& arg : { args... }) {
if (arg) {
arg->setOrderOfArrival(ooa);
ooa += 1;
}
}
}
$register_ids(CreatorLayer) {
setIDSafe<CCSprite>(this, 0, "background");
if (auto menu = getChildOfType<CCMenu>(this, 0)) {
menu->setID("creator-buttons-menu");
setIDSafe(menu, 0, "create-button");
setIDSafe(menu, 1, "saved-button");
setIDSafe(menu, 2, "scores-button");
setIDSafe(menu, 3, "quests-button");
setIDSafe(menu, 4, "daily-button");
setIDSafe(menu, 5, "weekly-button");
setIDSafe(menu, 6, "featured-button");
setIDSafe(menu, 7, "hall-of-fame-button");
setIDSafe(menu, 8, "map-packs-button");
setIDSafe(menu, 9, "search-button");
setIDSafe(menu, 10, "gauntlets-button");
// move vault button to its own menu
if (auto lockBtn = setIDSafe(menu, -2, "vault-button")) {
auto menu = detachAndCreateMenu(
this,
"top-right-menu",
ColumnLayout::create()
->setAxisReverse(true)
->setAxisAlignment(AxisAlignment::End),
lockBtn
);
menu->setPositionY(menu->getPositionY() - 125.f / 2);
menu->setContentSize({ 60.f, 125.f });
menu->setPositionY(
menu->getPositionY() - 150.f / 2 +
lockBtn->getScaledContentSize().height / 2
);
menu->setContentSize({ 60.f, 150.f });
menu->updateLayout();
}
@ -47,16 +50,49 @@ $register_ids(CreatorLayer) {
->setAxisAlignment(AxisAlignment::Start),
roomBtn
);
menu->setPositionY(menu->getPositionY() + 125.f / 2);
menu->setPositionY(
menu->getPositionY() + 125.f / 2 -
roomBtn->getScaledContentSize().height / 2
);
menu->setContentSize({ 60.f, 125.f });
menu->updateLayout();
}
// row order is inverted because of layout
reorderButtons(
setIDSafe(menu, 6, "featured-button"),
setIDSafe(menu, 7, "hall-of-fame-button"),
setIDSafe(menu, 8, "map-packs-button"),
setIDSafe(menu, 9, "search-button"),
setIDSafe(menu, 3, "quests-button"),
setIDSafe(menu, 4, "daily-button"),
setIDSafe(menu, 5, "weekly-button"),
setIDSafe(menu, 10, "gauntlets-button"),
setIDSafe(menu, 0, "create-button"),
setIDSafe(menu, 1, "saved-button"),
setIDSafe(menu, 2, "scores-button")
);
menu->setContentSize({ 470.f, 310.f });
menu->setLayout(
RowLayout::create()
->setGap(12.f)
->setCrossAxisReverse(true)
->setGrowCrossAxis(true)
->setCrossAxisOverflow(false)
);
}
if (auto menu = getChildOfType<CCMenu>(this, 1)) {
menu->setID("exit-menu");
setIDSafe(menu, 0, "exit-button");
menu->setPositionY(menu->getPositionY() - 125.f / 2);
auto exitBtn = setIDSafe(menu, 0, "exit-button");
menu->setPositionY(
menu->getPositionY() - 125.f / 2 +
exitBtn->getScaledContentSize().height / 2
);
menu->setContentSize({ 60.f, 125.f });
menu->setLayout(
ColumnLayout::create()
@ -67,7 +103,7 @@ $register_ids(CreatorLayer) {
// add a menu to the bottom left corner that is empty but prolly a place mods
// want to add stuff to
auto menu = CCMenu::create();
menu->setPosition(24.f, 24.f + 125.f / 2);
menu->setPosition(24.f, 0.f + 125.f / 2);
menu->setID("bottom-left-menu");
menu->setContentSize({ 60.f, 125.f });
menu->setLayout(

View file

@ -19,24 +19,26 @@ $register_ids(EditLevelLayer) {
"description-background",
"description-input",
"description-text-area",
"level-action-menu",
"level-edit-menu",
"level-length",
"level-song",
"level-verified",
"version-label",
"level-id-label",
"right-side-menu",
"level-actions-menu",
"back-button-menu",
"info-button-menu"
);
auto winSize = CCDirector::get()->getWinSize();
if (auto menu = this->getChildByID("level-action-menu")) {
if (auto menu = this->getChildByID("level-edit-menu")) {
setIDs(menu, 0, "edit-button", "play-button", "share-button");
menu->setContentSize({ winSize.width - 160.f, 100.f });
menu->setLayout(RowLayout::create()->setGap(10.f));
}
if (auto menu = this->getChildByID("right-side-menu")) {
if (auto menu = this->getChildByID("level-actions-menu")) {
setIDs(
menu,
0,
@ -47,31 +49,28 @@ $register_ids(EditLevelLayer) {
"folder-button"
);
detachAndCreateMenu(
this, "folder-menu", ColumnLayout::create(), menu->getChildByID("folder-button")
auto folderMenu = detachAndCreateMenu(
this, "folder-menu",
ColumnLayout::create(),
menu->getChildByID("folder-button")
);
folderMenu->setContentSize({ 50.f, 215.f });
folderMenu->updateLayout();
menu->setPosition(
menu->getPositionX() + static_cast<CCNode*>(
menu->getChildren()->firstObject()
)->getPositionX(),
winSize.height / 2
);
menu->setContentSize({ 60.f, winSize.height - 50.f });
menu->setContentSize({ 60.f, winSize.height - 15.f });
menu->setLayout(
ColumnLayout::create()
->setGap(7.f)
->setAxisAlignment(AxisAlignment::Start)
->setAxisAlignment(AxisAlignment::End)
->setAxisReverse(true)
);
menu->setZOrder(1);
for (int i = 0; i < rand() % 4; i++) {
auto btn = CircleButtonSprite::create(
CCLabelBMFont::create(std::to_string(i).c_str(), "bigFont.fnt")
);
menu->addChild(btn);
}
menu->updateLayout();
}
if (auto menu = this->getChildByID("back-button-menu")) setIDSafe(menu, 0, "back-button");

View file

@ -15,7 +15,7 @@ $register_ids(LevelBrowserLayer) {
if (m_searchObject->m_searchType == SearchType::MyLevels) {
if (auto menu = getChildOfType<CCMenu>(this, 2)) {
menu->setID("new-level-menu");
setIDSafe(menu, 0, "new-level-button");
auto newLvlBtn = setIDSafe(menu, 0, "new-level-button");
if (auto myLevelsBtn = setIDSafe(menu, 1, "my-levels-button")) {
auto menu = detachAndCreateMenu(
@ -25,7 +25,10 @@ $register_ids(LevelBrowserLayer) {
->setAxisAlignment(AxisAlignment::Start),
myLevelsBtn
);
menu->setPositionY(menu->getPositionY() + 100.f / 2);
menu->setPositionY(
menu->getPositionY() + 100.f / 2 -
myLevelsBtn->getScaledContentSize().height / 2
);
menu->setContentSize({ 50.f, 100.f });
menu->updateLayout();
}
@ -34,23 +37,46 @@ $register_ids(LevelBrowserLayer) {
ColumnLayout::create()
->setAxisAlignment(AxisAlignment::Start)
);
menu->setPositionY(menu->getPositionY() + 150.f / 2);
menu->setPositionY(
menu->getPositionY() + 150.f / 2 -
newLvlBtn->getScaledContentSize().height / 2
);
menu->setContentSize({ 50.f, 150.f });
menu->updateLayout();
}
if (auto menu = getChildOfType<CCMenu>(this, 1)) {
if (auto searchBtn = setIDSafe(menu, 5, "search-button")) {
auto menu = detachAndCreateMenu(
auto clearBtn = setIDSafe(menu, 6, "clear-search-button");
// this is a hacky fix because for some reason adding children
// before the clear button is made visible is inconsistent
if (clearBtn) {
searchBtn->setZOrder(-1);
clearBtn->setZOrder(-1);
}
auto searchMenu = detachAndCreateMenu(
this,
"search-menu",
ColumnLayout::create()
->setAxisAlignment(AxisAlignment::Start),
searchBtn
->setAxisReverse(true)
->setCrossAxisReverse(true)
->setGrowCrossAxis(true)
->setCrossAxisOverflow(false)
->setCrossAxisAlignment(AxisAlignment::Start)
->setAxisAlignment(AxisAlignment::End),
searchBtn,
clearBtn
);
menu->setPositionY(menu->getPositionY() + 50.f / 2);
menu->setContentSize({ 50.f, 50.f });
menu->updateLayout();
searchMenu->setPositionX(
searchMenu->getPositionX() + 80.f / 2 -
searchBtn->getScaledContentSize().width / 2
);
searchMenu->setPositionY(
searchMenu->getPositionY() - 80.f / 2 +
searchBtn->getScaledContentSize().height / 2
);
searchMenu->setContentSize({ 80.f, 80.f });
searchMenu->updateLayout();
}
}
}

View file

@ -11,6 +11,8 @@ $register_ids(MenuLayer) {
setIDSafe(this, 0, "main-menu-bg");
setIDSafe<CCSprite>(this, 0, "main-title");
auto winSize = CCDirector::get()->getWinSize();
// controller
if (PlatformToolbox::isControllerConnected()) {
setIDSafe<CCSprite>(this, 1, "play-gamepad-icon");
@ -133,6 +135,19 @@ $register_ids(MenuLayer) {
->setAxisReverse(true)
);
}
// add a menu to the top right corner that is empty but prolly a place mods
// want to add stuff to since it's symmetrically opposite to the close button
auto menu = CCMenu::create();
menu->setPosition(winSize.width - 200.f / 2, winSize.height - 50.f / 2);
menu->setID("top-right-menu");
menu->setContentSize({ 200.f, 50.f });
menu->setLayout(
RowLayout::create()
->setAxisReverse(true)
->setAxisAlignment(AxisAlignment::End)
);
this->addChild(menu);
}
struct $modify(MenuLayer) {