From 29f1366f516ae8828862bce44c4c46212a3c8167 Mon Sep 17 00:00:00 2001 From: XYZ <73427093+einXYZ@users.noreply.github.com> Date: Sun, 2 Aug 2026 19:24:37 +0200 Subject: [PATCH] Add files via upload --- src/ColorSelectPopup.cpp | 236 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 236 insertions(+) create mode 100644 src/ColorSelectPopup.cpp diff --git a/src/ColorSelectPopup.cpp b/src/ColorSelectPopup.cpp new file mode 100644 index 0000000..517f40f --- /dev/null +++ b/src/ColorSelectPopup.cpp @@ -0,0 +1,236 @@ +#include + +#include +#include + +using namespace geode::prelude; +using namespace geode::node_ids; + +$register_ids(ColorSelectPopup) { + bool pauseMenu = this->m_colorAction != nullptr; + bool newColorTrigger = this->m_newColorTrigger; + bool backgroundTrigger = this->m_backgroundTrigger; + + setIDSafe(this, 0, "copy-opacity-label"); + setIDSafe(this, 1, "channel-id-label"); + setIDSafe(this, 0, "legacy-hsv-widget"); + + setIDSafe(m_mainLayer, 0, "background"); + setIDSafe(m_mainLayer, 0, "title-label"); + setIDSafe(m_mainLayer, 0, "new-color-preview-sprite"); + setIDSafe(m_mainLayer, 1, "old-color-preview-sprite"); + setIDSafe(m_mainLayer, 0, "color-picker"); + + auto menu = setIDSafe(m_mainLayer, 0, "menu"); + if (menu) { + setIDSafe(menu, 0, "ok-button"); + setIDSafe(menu, 1, "copy-button"); + setIDSafe(menu, 2, "paste-button"); + setIDSafe(menu, 3, "default-button"); + + setIDSafe(menu, 0, "player-color-1-toggle"); + setIDSafe(menu, 1, "player-color-2-toggle"); + + setIDSafe(menu, 0, "info-button"); + } + + if (pauseMenu) { + setIDSafe(m_mainLayer, 1, "channel-id-background"); + setIDSafe(m_mainLayer, 2, "red-background"); + setIDSafe(m_mainLayer, 3, "green-background"); + setIDSafe(m_mainLayer, 4, "blue-background"); + setIDSafe(m_mainLayer, 5, "hex-background"); + + setIDSafe(m_mainLayer, 1, "opacity-label"); + setIDSafe(m_mainLayer, 2, "player-color-1-label"); + setIDSafe(m_mainLayer, 3, "player-color-2-label"); + setIDSafe(m_mainLayer, 4, "blending-label"); + setIDSafe(m_mainLayer, 5, "copy-color-label"); + setIDSafe(m_mainLayer, 6, "legacy-hsv-label"); + setIDSafe(m_mainLayer, 7, "red-label"); + setIDSafe(m_mainLayer, 8, "green-label"); + setIDSafe(m_mainLayer, 9, "blue-label"); + setIDSafe(m_mainLayer, 10, "hex-label"); + + setIDSafe(m_mainLayer, 0, "channel-id-input"); + setIDSafe(m_mainLayer, 1, "red-input"); + setIDSafe(m_mainLayer, 2, "green-input"); + setIDSafe(m_mainLayer, 3, "blue-input"); + setIDSafe(m_mainLayer, 4, "hex-input"); + + setIDSafe(m_mainLayer, 0, "opacity-slider"); + + if (menu) { + setIDSafe(menu, 4, "channel-id-prev-button"); + setIDSafe(menu, 5, "channel-id-next-button"); + setIDSafe(menu, 6, "special-channel-select-button"); + + setIDSafe(menu, 2, "blending-toggle"); + setIDSafe(menu, 3, "copy-color-toggle"); + setIDSafe(menu, 4, "copy-opacity-toggle"); + setIDSafe(menu, 5, "legacy-hsv-toggle"); + } + } else if (!newColorTrigger && backgroundTrigger) { + setIDSafe(m_mainLayer, 1, "fade-time-background"); + setIDSafe(m_mainLayer, 2, "channel-id-background"); + setIDSafe(m_mainLayer, 3, "red-background"); + setIDSafe(m_mainLayer, 4, "green-background"); + setIDSafe(m_mainLayer, 5, "blue-background"); + setIDSafe(m_mainLayer, 6, "hex-background"); + + setIDSafe(m_mainLayer, 1, "fade-time-label"); + setIDSafe(m_mainLayer, 2, "opacity-label"); + setIDSafe(m_mainLayer, 3, "player-color-1-label"); + setIDSafe(m_mainLayer, 4, "player-color-2-label"); + setIDSafe(m_mainLayer, 5, "tint-ground-label"); + setIDSafe(m_mainLayer, 6, "blending-label"); + setIDSafe(m_mainLayer, 7, "copy-color-label"); + setIDSafe(m_mainLayer, 8, "touch-trigger-label"); + setIDSafe(m_mainLayer, 9, "spawn-trigger-label"); + setIDSafe(m_mainLayer, 10, "multi-trigger-label"); + setIDSafe(m_mainLayer, 11, "legacy-hsv-label"); + setIDSafe(m_mainLayer, 12, "red-label"); + setIDSafe(m_mainLayer, 13, "green-label"); + setIDSafe(m_mainLayer, 14, "blue-label"); + setIDSafe(m_mainLayer, 15, "hex-label"); + + setIDSafe(m_mainLayer, 0, "fade-time-input"); + setIDSafe(m_mainLayer, 1, "channel-id-input"); + setIDSafe(m_mainLayer, 2, "red-input"); + setIDSafe(m_mainLayer, 3, "green-input"); + setIDSafe(m_mainLayer, 4, "blue-input"); + setIDSafe(m_mainLayer, 5, "hex-input"); + + setIDSafe(m_mainLayer, 0, "fade-time-slider"); + setIDSafe(m_mainLayer, 1, "opacity-slider"); + + if (menu) { + setIDSafe(menu, 4, "channel-id-prev-button"); + setIDSafe(menu, 5, "channel-id-next-button"); + setIDSafe(menu, 6, "special-channel-select-button"); + + setIDSafe(menu, 2, "tint-ground-toggle"); + setIDSafe(menu, 3, "blending-toggle"); + setIDSafe(menu, 4, "copy-color-toggle"); + setIDSafe(menu, 5, "touch-trigger-toggle"); + setIDSafe(menu, 6, "spawn-trigger-toggle"); + setIDSafe(menu, 7, "multi-trigger-toggle"); + setIDSafe(menu, 8, "copy-opacity-toggle"); + setIDSafe(menu, 9, "legacy-hsv-toggle"); + } + } else if (!newColorTrigger) { + setIDSafe(m_mainLayer, 1, "fade-time-background"); + setIDSafe(m_mainLayer, 2, "channel-id-background"); + setIDSafe(m_mainLayer, 3, "red-background"); + setIDSafe(m_mainLayer, 4, "green-background"); + setIDSafe(m_mainLayer, 5, "blue-background"); + setIDSafe(m_mainLayer, 6, "hex-background"); + + setIDSafe(m_mainLayer, 1, "fade-time-label"); + setIDSafe(m_mainLayer, 2, "opacity-label"); + setIDSafe(m_mainLayer, 3, "player-color-1-label"); + setIDSafe(m_mainLayer, 4, "player-color-2-label"); + setIDSafe(m_mainLayer, 5, "blending-label"); + setIDSafe(m_mainLayer, 6, "copy-color-label"); + setIDSafe(m_mainLayer, 7, "touch-trigger-label"); + setIDSafe(m_mainLayer, 8, "spawn-trigger-label"); + setIDSafe(m_mainLayer, 9, "multi-trigger-label"); + setIDSafe(m_mainLayer, 10, "legacy-hsv-label"); + setIDSafe(m_mainLayer, 11, "red-label"); + setIDSafe(m_mainLayer, 12, "green-label"); + setIDSafe(m_mainLayer, 13, "blue-label"); + setIDSafe(m_mainLayer, 14, "hex-label"); + + setIDSafe(m_mainLayer, 0, "fade-time-input"); + setIDSafe(m_mainLayer, 1, "channel-id-input"); + setIDSafe(m_mainLayer, 2, "red-input"); + setIDSafe(m_mainLayer, 3, "green-input"); + setIDSafe(m_mainLayer, 4, "blue-input"); + setIDSafe(m_mainLayer, 5, "hex-input"); + + setIDSafe(m_mainLayer, 0, "fade-time-slider"); + setIDSafe(m_mainLayer, 1, "opacity-slider"); + + if (menu) { + setIDSafe(menu, 4, "channel-id-prev-button"); + setIDSafe(menu, 5, "channel-id-next-button"); + setIDSafe(menu, 6, "special-channel-select-button"); + + setIDSafe(menu, 2, "blending-toggle"); + setIDSafe(menu, 3, "copy-color-toggle"); + setIDSafe(menu, 4, "touch-trigger-toggle"); + setIDSafe(menu, 5, "spawn-trigger-toggle"); + setIDSafe(menu, 6, "multi-trigger-toggle"); + setIDSafe(menu, 7, "copy-opacity-toggle"); + setIDSafe(menu, 8, "legacy-hsv-toggle"); + } + } else { + setIDSafe(m_mainLayer, 1, "fade-time-background"); + setIDSafe(m_mainLayer, 2, "color-id-background"); + setIDSafe(m_mainLayer, 3, "channel-id-background"); + setIDSafe(m_mainLayer, 4, "red-background"); + setIDSafe(m_mainLayer, 5, "green-background"); + setIDSafe(m_mainLayer, 6, "blue-background"); + setIDSafe(m_mainLayer, 7, "hex-background"); + + setIDSafe(m_mainLayer, 1, "fade-time-label"); + setIDSafe(m_mainLayer, 2, "opacity-label"); + setIDSafe(m_mainLayer, 3, "player-color-1-label"); + setIDSafe(m_mainLayer, 4, "player-color-2-label"); + setIDSafe(m_mainLayer, 5, "blending-label"); + setIDSafe(m_mainLayer, 6, "copy-color-label"); + setIDSafe(m_mainLayer, 7, "touch-trigger-label"); + setIDSafe(m_mainLayer, 8, "spawn-trigger-label"); + setIDSafe(m_mainLayer, 9, "multi-trigger-label"); + setIDSafe(m_mainLayer, 10, "legacy-hsv-label"); + setIDSafe(m_mainLayer, 11, "color-id-label"); + setIDSafe(m_mainLayer, 12, "red-label"); + setIDSafe(m_mainLayer, 13, "green-label"); + setIDSafe(m_mainLayer, 14, "blue-label"); + setIDSafe(m_mainLayer, 15, "hex-label"); + + setIDSafe(m_mainLayer, 0, "fade-time-input"); + setIDSafe(m_mainLayer, 1, "color-id-input"); + setIDSafe(m_mainLayer, 2, "channel-id-input"); + setIDSafe(m_mainLayer, 3, "red-input"); + setIDSafe(m_mainLayer, 4, "green-input"); + setIDSafe(m_mainLayer, 5, "blue-input"); + setIDSafe(m_mainLayer, 6, "hex-input"); + + setIDSafe(m_mainLayer, 0, "fade-time-slider"); + setIDSafe(m_mainLayer, 1, "opacity-slider"); + + if (menu) { + setIDSafe(menu, 4, "special-color-select-button"); + setIDSafe(menu, 5, "color-id-prev-button"); + setIDSafe(menu, 6, "color-id-next-button"); + setIDSafe(menu, 7, "channel-id-prev-button"); + setIDSafe(menu, 8, "channel-id-next-button"); + setIDSafe(menu, 9, "special-channel-select-button"); + + setIDSafe(menu, 2, "blending-toggle"); + setIDSafe(menu, 3, "copy-color-toggle"); + setIDSafe(menu, 4, "touch-trigger-toggle"); + setIDSafe(menu, 5, "spawn-trigger-toggle"); + setIDSafe(menu, 6, "multi-trigger-toggle"); + setIDSafe(menu, 7, "copy-opacity-toggle"); + setIDSafe(menu, 8, "legacy-hsv-toggle"); + } + } +} + +struct ColorSelectPopupIDs : Modify { + static void onModify(auto& self) { + if (!self.setHookPriority("ColorSelectPopup::init", GEODE_ID_PRIORITY)) { + log::warn("Failed to set ColorSelectPopup::init hook priority, node IDs may not work properly"); + } + } + + bool init(EffectGameObject* object, CCArray* objects, ColorAction* action) { + if (!ColorSelectPopup::init(object, objects, action)) return false; + + NodeIDs::get()->provide(this); + + return true; + } +}; \ No newline at end of file