more workings

- update all ID setters to new system
 - move EnterLayerEvent to be automatically posted for all id registrers
This commit is contained in:
HJfod 2022-10-22 22:52:54 +03:00
parent 3ac13012ae
commit f5dbdff0d8
5 changed files with 37 additions and 145 deletions

View file

@ -1,6 +1,7 @@
#pragma once
#include "../DefaultInclude.hpp"
#include "../ui/EnterLayerEvent.hpp"
namespace cocos2d {
class CCNode;
@ -43,8 +44,11 @@ namespace geode {
template<IDProvidable For>
void GEODE_CALL geodeInternalProvideIDsFor(For* cls) {
cls->setID(For::CLASS_NAME);
cls->provide();
if (cls->getID() != For::CLASS_NAME) {
cls->setID(For::CLASS_NAME);
cls->provide();
EnterLayerEvent(For::CLASS_NAME, cls).post();
}
}
}

View file

@ -1,98 +0,0 @@
#include <Geode/utils/cocos.hpp>
#include <Index.hpp>
#include "../ui/internal/list/ModListLayer.hpp"
#include <InternalMod.hpp>
#include "../ui/internal/info/ModInfoLayer.hpp"
#include <InternalLoader.hpp>
USE_GEODE_NAMESPACE();
#pragma warning(disable: 4217)
template<class T = CCNode>
requires std::is_base_of_v<CCNode, T>
T* setIDSafe(CCNode* node, int index, const char* id) {
if constexpr (std::is_same_v<CCNode, T>) {
if (auto child = getChild(node, index)) {
child->setID(id);
return child;
}
} else {
if (auto child = getChildOfType<T>(node, index)) {
child->setID(id);
return child;
}
}
return nullptr;
}
#include <Geode/modify/LevelSearchLayer.hpp>
class $modify(LevelSearchLayer) {
bool init() {
if (!LevelSearchLayer::init())
return false;
// set the funny ids
this->setID("creator-layer");
setIDSafe(this, 0, "creator-layer-bg");
getChildOfType<CCTextInputNode>(this, 0)->setID("search-bar");
getChildOfType<CCScale9Sprite>(this, 0)->setID("level-search-bg");
getChildOfType<CCScale9Sprite>(this, 1)->setID("level-search-bar-bg");
getChildOfType<CCScale9Sprite>(this, 2)->setID("quick-search-bg");
getChildOfType<CCScale9Sprite>(this, 3)->setID("difficulty-filters-bg");
getChildOfType<CCScale9Sprite>(this, 4)->setID("length-filters-bg");
getChildOfType<CCLabelBMFont>(this, 0)->setID("quick-search-title");
getChildOfType<CCLabelBMFont>(this, 1)->setID("filters-title");
getChildOfType<CCSprite>(this, 1)->setID("left-corner");
getChildOfType<CCSprite>(this, 2)->setID("right-corner");
if (auto filtermenu = getChildOfType<CCMenu>(this, 0)) {
filtermenu->setID("other-filter-menu");
setIDSafe(filtermenu, 0, "clear-filters-button");
setIDSafe(filtermenu, 1, "advanced-filters-button");
}
if (auto searchmenu = getChildOfType<CCMenu>(this, 1)) {
searchmenu->setID("search-button-menu");
setIDSafe(searchmenu, 0, "search-level-button");
setIDSafe(searchmenu, 1, "search-user-button");
}
if (auto quickmenu = getChildOfType<CCMenu>(this, 2)) {
quickmenu->setID("quick-search-menu");
setIDSafe(quickmenu, 0, "most-downloaded-button");
setIDSafe(quickmenu, 1, "most-liked-button");
setIDSafe(quickmenu, 2, "trending-button");
setIDSafe(quickmenu, 3, "recent-button");
setIDSafe(quickmenu, 4, "magic-button");
setIDSafe(quickmenu, 5, "awarded-button");
setIDSafe(quickmenu, 6, "followed-button");
setIDSafe(quickmenu, 7, "friends-button");
}
if (auto filtersmenu = getChildOfType<CCMenu>(this, 3)) {
filtersmenu->setID("difficulty-filter-menu");
setIDSafe(filtersmenu, 0, "na-filter-button");
setIDSafe(filtersmenu, 1, "easy-filter-button");
setIDSafe(filtersmenu, 2, "normal-filter-button");
setIDSafe(filtersmenu, 3, "hard-filter-button");
setIDSafe(filtersmenu, 4, "harder-filter-button");
setIDSafe(filtersmenu, 5, "insane-filter-button");
setIDSafe(filtersmenu, 6, "demon-filter-button");
setIDSafe(filtersmenu, 7, "auto-filter-button");
setIDSafe(filtersmenu, 8, "demon-type-filter-button");
}
if (auto filtersmenu = getChildOfType<CCMenu>(this, 4)) {
filtersmenu->setID("length-filter-menu");
setIDSafe(filtersmenu, 0, "clock-icon");
setIDSafe(filtersmenu, 1, "tiny-filter-button");
setIDSafe(filtersmenu, 2, "short-filter-button");
setIDSafe(filtersmenu, 3, "medium-filter-button");
setIDSafe(filtersmenu, 4, "long-filter-button");
setIDSafe(filtersmenu, 5, "xl-filter-button");
setIDSafe(filtersmenu, 6, "star-filter-button");
}
if (auto backmenu = getChildOfType<CCMenu>(this, 5)) {
backmenu->setID("exit-menu");
setIDSafe(backmenu, 0, "exit-button");
}
return true;
}
};

View file

@ -1,57 +1,45 @@
#include <Geode/Modify.hpp>
#include <Geode/Bindings.hpp>
#include <Geode/utils/cocos.hpp>
#include <Geode/ui/EnterLayerEvent.hpp>
#include "AddIDs.hpp"
USE_GEODE_NAMESPACE();
class $modify(CreatorLayer) {
bool init() {
if (!CreatorLayer::init())
return false;
this->setID("CreatorLayer");
$register_ids(CreatorLayer) {
if (auto menu = getChildOfType<CCMenu>(this, 0)) {
menu->setID("creator-buttons-menu");
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");
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
// move vault button to its own menu
if (auto lockBtn = setIDSafe(menu, -2, "vault-button")) {
detachIntoOwnMenu(this, lockBtn, "top-right-menu",
ColumnLayout::create(5.f, 0.f)->setAlignment(Alignment::Begin)
);
}
// move treasure room button to its own menu
if (auto roomBtn = setIDSafe(menu, -1, "treasure-room-button")) {
detachIntoOwnMenu(this, roomBtn, "bottom-right-menu",
ColumnLayout::create(5.f, 0.f)->setAlignment(Alignment::End)
);
}
if (auto lockBtn = setIDSafe(menu, -2, "vault-button")) {
detachIntoOwnMenu(this, lockBtn, "top-right-menu",
ColumnLayout::create(5.f, 0.f)->setAlignment(Alignment::Begin)
);
}
if (auto menu = getChildOfType<CCMenu>(this, 1)) {
menu->setID("go-back-menu");
setIDSafe(menu, 0, "back-button");
// move treasure room button to its own menu
if (auto roomBtn = setIDSafe(menu, -1, "treasure-room-button")) {
detachIntoOwnMenu(this, roomBtn, "bottom-right-menu",
ColumnLayout::create(5.f, 0.f)->setAlignment(Alignment::End)
);
}
EnterLayerEvent("CreatorLayer", this).post();
return true;
}
};
if (auto menu = getChildOfType<CCMenu>(this, 1)) {
menu->setID("go-back-menu");
setIDSafe(menu, 0, "back-button");
}
}

View file

@ -1,7 +1,6 @@
#include <Geode/Modify.hpp>
#include <Geode/Bindings.hpp>
#include <Geode/utils/cocos.hpp>
#include <Geode/ui/EnterLayerEvent.hpp>
#include "AddIDs.hpp"
USE_GEODE_NAMESPACE();

View file

@ -1,6 +1,5 @@
#include <Geode/modify/MenuLayer.hpp>
#include <Geode/utils/cocos.hpp>
#include <Geode/ui/EnterLayerEvent.hpp>
#include "AddIDs.hpp"
USE_GEODE_NAMESPACE();