From 022b566cebe05dc8b49ef67b37adf89ba944b2d9 Mon Sep 17 00:00:00 2001 From: notTerma <88609162+Termantita@users.noreply.github.com> Date: Sun, 10 Mar 2024 12:50:09 -0300 Subject: [PATCH] LevelEditorLayer.cpp implemented and PlayLayer.cpp modified (#31) * LevelEditorLayer.cpp implemented * Added background string ID to PlayLayer * Improved getting method for ShaderLayer in LevelEditorLayer * Revert change in PlayLayer --- src/LevelEditorLayer.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/PlayLayer.cpp | 2 ++ 2 files changed, 39 insertions(+) create mode 100644 src/LevelEditorLayer.cpp diff --git a/src/LevelEditorLayer.cpp b/src/LevelEditorLayer.cpp new file mode 100644 index 0000000..3d6f3e7 --- /dev/null +++ b/src/LevelEditorLayer.cpp @@ -0,0 +1,37 @@ +#include +#include +#include +#include + +#include "IDCheck.hpp" + +using namespace geode::prelude; +using namespace geode::node_ids; + +$register_ids(LevelEditorLayer) { + setIDSafe(this, 0, "effect-manager"); + + if (auto shaderLayer = getChildOfType(this, 0)) { + setIDSafe(shaderLayer, 1, "main-node"); + setIDSafe(static_cast(shaderLayer->getChildren()->objectAtIndex(1)), 0, "background"); + } else { + setIDSafe(this, 1, "main-node"); + setIDSafe(static_cast(this->getChildren()->objectAtIndex(1)), 0, "background"); + } +} + +struct LevelEditorLayerIDs : Modify { + static void onModify(auto& self) { + if (!self.setHookPriority("LevelEditorLayer::init", GEODE_ID_PRIORITY)) { + log::warn("Failed to set LevelEditorLayer::init hook priority, node IDs may not work properly"); + } + } + + bool init(GJGameLevel* level, bool p1) { + if (!LevelEditorLayer::init(level, p1)) return false; + + NodeIDs::get()->provide(this); + + return true; + } +}; \ No newline at end of file diff --git a/src/PlayLayer.cpp b/src/PlayLayer.cpp index 55e22cf..85d7b89 100644 --- a/src/PlayLayer.cpp +++ b/src/PlayLayer.cpp @@ -10,6 +10,8 @@ using namespace geode::node_ids; $register_ids(PlayLayer) { setIDSafe(this, 1, "main-node"); + setIDSafe(static_cast(this->getChildren()->objectAtIndex(1)), 0, "background"); + setIDSafe(this, 3, "hitbox-node"); setIDSafe(this, 0, "effect-manager"); //setIDSafe(this, 0, "ui-layer"); //changing this id is unsafe because mods depend on "UILayer", which is actually fairly safe to do, since this is the only UILayer in the whole layer