Skip to content

Commit

Permalink
add CustomizeObjectLayer ids
Browse files Browse the repository at this point in the history
  • Loading branch information
HJfod committed Jul 29, 2023
1 parent c79c518 commit 6d92bb8
Showing 1 changed file with 291 additions and 0 deletions.
291 changes: 291 additions & 0 deletions loader/src/ids/CustomizeObjectLayer.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,291 @@
#include "AddIDs.hpp"

#include <Geode/modify/CustomizeObjectLayer.hpp>

using namespace geode::prelude;

$register_ids(CustomizeObjectLayer) {
auto winSize = CCDirector::get()->getWinSize();

setIDs(
m_mainLayer, 0,
"alert-bg",
"title-label",
"button-menu",
"selected-channel-label",
"channel-input-bg",
"channel-input",
"text-input-bg",
"text-input",
"glow-label"
);

m_buttonMenu->setID("ok-menu");

setIDs(
m_buttonMenu,
0,
"ok-button",
"info-button",

"base-tab-button",
"detail-tab-button",
"base-hsv-button",
"detail-hsv-button",
"text-tab-button",

"player-color-1-button",
"player-color-2-button",
"light-bg-button",
"default-button",
"channel-1-button",
"channel-2-button",
"channel-3-button",
"channel-4-button",
"channel-5-button",
"channel-6-button",
"channel-7-button",
"channel-8-button",
"channel-9-button",
"channel-10-button",

"select-channel-up-button",
"select-channel-down-button",
"select-channel-button",

"split-text-button",
"clear-text-button",

"next-free-button",

"copy-button",
"paste-button",

"browse-button",

"glow-toggle"
);

auto tabsLayout = RowLayout::create()
->setAxisAlignment(AxisAlignment::Center)
->setCrossAxisAlignment(AxisAlignment::Center);
tabsLayout->ignoreInvisibleChildren(true);
auto tabsMenu = detachAndCreateMenu(
m_mainLayer,
"tabs-menu",
tabsLayout,
m_buttonMenu->getChildByID("base-tab-button"),
m_buttonMenu->getChildByID("detail-tab-button"),
SpacerNode::create(),
m_buttonMenu->getChildByID("text-tab-button")
);
tabsMenu->setContentSize({ 360.f, 50.f });
tabsMenu->setPositionX(winSize.width / 2);
tabsMenu->updateLayout();

auto specialChannelsMenu = detachAndCreateMenu(
m_mainLayer,
"special-channels-menu",
RowLayout::create()
->setCrossAxisOverflow(false)
->setGrowCrossAxis(true)
->setAxisAlignment(AxisAlignment::Center)
->setCrossAxisAlignment(AxisAlignment::Center)
->setGap(14.f),
m_buttonMenu->getChildByID("player-color-1-button"),
m_buttonMenu->getChildByID("player-color-2-button"),
m_buttonMenu->getChildByID("light-bg-button"),
m_buttonMenu->getChildByID("default-button")
);
specialChannelsMenu->setContentSize({ 350.f, 50.f });
specialChannelsMenu->setPositionX(winSize.width / 2);
specialChannelsMenu->updateLayout();

auto channelsMenu = detachAndCreateMenu(
m_mainLayer,
"channels-menu",
RowLayout::create()
->setCrossAxisOverflow(false)
->setGrowCrossAxis(true)
->setAxisAlignment(AxisAlignment::Center)
->setCrossAxisAlignment(AxisAlignment::Center)
->setGap(20.f),
m_buttonMenu->getChildByID("channel-1-button"),
m_buttonMenu->getChildByID("channel-2-button"),
m_buttonMenu->getChildByID("channel-3-button"),
m_buttonMenu->getChildByID("channel-4-button"),
m_buttonMenu->getChildByID("channel-5-button"),
m_buttonMenu->getChildByID("channel-6-button"),
m_buttonMenu->getChildByID("channel-7-button"),
m_buttonMenu->getChildByID("channel-8-button"),
m_buttonMenu->getChildByID("channel-9-button"),
m_buttonMenu->getChildByID("channel-10-button")
);
channelsMenu->setContentSize({ 350.f, 100.f });
channelsMenu->setPosition(winSize.width / 2, winSize.height / 2 - 25.f);
channelsMenu->updateLayout();

auto selectedChannelMenu = detachAndCreateMenu(
m_mainLayer,
"selected-channel-menu",
nullptr,
m_buttonMenu->getChildByID("select-channel-button"),
m_mainLayer->getChildByID("selected-channel-label")
);
selectedChannelMenu->setContentSize({ 120.f, 40.f });
selectedChannelMenu->setPosition(
winSize.width / 2 + 110.f,
winSize.height / 2 - 90.f
);
if (auto label = selectedChannelMenu->getChildByID("selected-channel-label")) {
label->setPosition(75.f, 20.f);
}
if (auto button = selectedChannelMenu->getChildByID("select-channel-button")) {
button->setPosition(100.f, 20.f);
}

auto togglesMenu = detachAndCreateMenu(
m_mainLayer,
"toggles-menu",
nullptr,
m_mainLayer->getChildByID("glow-label"),
m_buttonMenu->getChildByID("glow-toggle")
);
togglesMenu->setContentSize({ 75.f, 120.f });
togglesMenu->setPosition(55.f, 90.f);
if (auto label = togglesMenu->getChildByID("glow-label")) {
label->setPosition(57.f, 20.f);
}
if (auto toggle = togglesMenu->getChildByID("glow-toggle")) {
toggle->setPosition(57.f, 5.f);
}

auto baseHSVMenu = detachAndCreateMenu(
m_mainLayer,
"base-hsv-menu",
RowLayout::create()
->setAxisAlignment(AxisAlignment::Start),
m_buttonMenu->getChildByID("base-hsv-button")
);
baseHSVMenu->setContentSize({ 80.f, 60.f });
baseHSVMenu->setPositionX(winSize.width / 2 - 132.5f);
baseHSVMenu->updateLayout();

auto detailHSVMenu = detachAndCreateMenu(
m_mainLayer,
"detail-hsv-menu",
RowLayout::create()
->setAxisAlignment(AxisAlignment::Start),
m_buttonMenu->getChildByID("detail-hsv-button")
);
detailHSVMenu->setContentSize({ 80.f, 60.f });
detailHSVMenu->setPositionX(baseHSVMenu->getPositionX());
detailHSVMenu->updateLayout();

auto nextFreeMenu = detachAndCreateMenu(
m_mainLayer,
"next-free-menu",
RowLayout::create()
->setAxisAlignment(AxisAlignment::Start),
m_buttonMenu->getChildByID("next-free-button")
);
nextFreeMenu->setContentSize({ 120.f, 60.f });
nextFreeMenu->setPositionX(winSize.width / 2 - 110.f);
nextFreeMenu->updateLayout();

auto textActionsMenu = detachAndCreateMenu(
m_mainLayer,
"text-actions-menu",
RowLayout::create()
->setAxisAlignment(AxisAlignment::End)
->setAxisReverse(true),
m_buttonMenu->getChildByID("split-text-button")
);
textActionsMenu->setContentSize({ 120.f, 60.f });
textActionsMenu->setPositionX(winSize.width / 2 + 110.f);
textActionsMenu->updateLayout();

detachAndCreateMenu(
m_mainLayer,
"clear-text-menu",
nullptr,
m_buttonMenu->getChildByID("clear-text-button")
);

auto infoMenu = detachAndCreateMenu(
m_mainLayer,
"info-menu",
RowLayout::create()
->setAxisAlignment(AxisAlignment::End)
->setAxisReverse(true),
m_buttonMenu->getChildByID("info-button")
);
infoMenu->setContentSize({ 80.f, 60.f });
infoMenu->setPosition(winSize.width / 2 + 132.5f, baseHSVMenu->getPositionY());
infoMenu->updateLayout();

auto browseMenu = detachAndCreateMenu(
m_mainLayer,
"browse-menu",
ColumnLayout::create()
->setAxisAlignment(AxisAlignment::Start)
->setAxisReverse(true),
m_buttonMenu->getChildByID("browse-button")
);
browseMenu->setContentSize({ 100.f, 140.f });
browseMenu->setPositionY(winSize.height / 2 - 70.f);
browseMenu->updateLayout();

auto copyPasteMenu = detachAndCreateMenu(
m_mainLayer,
"copy-paste-menu",
ColumnLayout::create()
->setAxisAlignment(AxisAlignment::End)
->setAxisReverse(true),
m_buttonMenu->getChildByID("copy-button"),
m_buttonMenu->getChildByID("paste-button")
);
copyPasteMenu->setContentSize({ 100.f, 140.f });
copyPasteMenu->setPositionY(winSize.height / 2 + 100.f);
copyPasteMenu->updateLayout();

auto selectChannelMenu = detachAndCreateMenu(
m_mainLayer,
"select-channel-menu",
nullptr,
m_mainLayer->getChildByID("channel-input-bg"),
m_mainLayer->getChildByID("channel-input"),
m_buttonMenu->getChildByID("select-channel-up-button"),
m_buttonMenu->getChildByID("select-channel-down-button")
);
selectChannelMenu->setContentSize({ 60.f, 140.f });
if (auto bg = selectChannelMenu->getChildByID("channel-input-bg")) {
bg->setPosition({ 30.f, 70.f });
}
if (auto input = selectChannelMenu->getChildByID("channel-input")) {
input->setPosition({ 30.f, 70.f });
}
if (auto btn = selectChannelMenu->getChildByID("select-channel-up-button")) {
btn->setPosition({ 30.f, 110.f });
}
if (auto btn = selectChannelMenu->getChildByID("select-channel-down-button")) {
btn->setPosition({ 30.f, 30.f });
}
}

struct CustomizeObjectLayerIDs : Modify<CustomizeObjectLayerIDs, CustomizeObjectLayer> {
static void onModify(auto& self) {
if (!self.setHookPriority("CustomizeObjectLayer::init", GEODE_ID_PRIORITY)) {
log::warn("Failed to set CustomizeObjectLayer::init hook priority, node IDs may not work properly");
}
}

bool init(GameObject* obj, CCArray* objs) {
if (!CustomizeObjectLayer::init(obj, objs))
return false;

NodeIDs::get()->provide(this);

return true;
}
};

0 comments on commit 6d92bb8

Please sign in to comment.