Skip to content

Commit d7e0892

Browse files
committed
add helper in editor
1 parent 8690911 commit d7e0892

File tree

1 file changed

+58
-1
lines changed

1 file changed

+58
-1
lines changed

src/JoystickNode.cpp

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <Geode/modify/PlayLayer.hpp>
66
#include <Geode/modify/LevelEditorLayer.hpp>
77
#include <Geode/modify/UILayer.hpp>
8+
#include <Geode/modify/LevelSettingsLayer.hpp>
89

910
#ifdef GEODE_IS_DESKTOP
1011
#include <geode.custom-keybinds/include/Keybinds.hpp>
@@ -48,7 +49,7 @@ void runChecks(CCArray *objects) {
4849
if (obj->m_objectID == 914) {
4950
if (auto txt = static_cast<TextGameObject*>(obj)) {
5051
if (txt->m_text == "--enable-joystick")
51-
enableJoystick = true;;
52+
enableJoystick = true;
5253
}
5354
}
5455
}
@@ -521,6 +522,9 @@ class $modify(JSLEL, LevelEditorLayer) {
521522
LevelEditorLayer::onPlaytest();
522523
if (auto jsLayer = static_cast<JSUILayer*>(m_uiLayer)) {
523524
jsLayer->fixVisibility();
525+
if (auto node = jsLayer->m_fields->m_joystickNode) {
526+
node->m_currentInput = CCPoint{0, 0};
527+
}
524528
}
525529
updateVal(this, 3740, 1);
526530
}
@@ -552,4 +556,57 @@ class $modify(JSPL, PlayLayer) {
552556
}
553557
}
554558
#endif
559+
};
560+
561+
class $modify(LTLSL, LevelSettingsLayer) {
562+
563+
struct Fields {
564+
TextGameObject* m_obj = nullptr;
565+
CCMenuItemToggler* m_toggle;
566+
};
567+
568+
bool init(LevelSettingsObject* settings, LevelEditorLayer* editor) {
569+
if (!LevelSettingsLayer::init(settings, editor)) return false;
570+
571+
for (auto obj : CCArrayExt<GameObject*>(editor->m_objects)) {
572+
if (auto txt = static_cast<TextGameObject*>(obj)) {
573+
if (txt->m_text == "--enable-joystick") {
574+
m_fields->m_obj = txt;
575+
}
576+
}
577+
}
578+
579+
CCMenuItemToggler* toggler = CCMenuItemExt::createTogglerWithStandardSprites(.7f, [this, editor](auto){
580+
if (m_fields->m_obj) {
581+
editor->m_editorUI->deselectObject(m_fields->m_obj);
582+
editor->m_editorUI->deleteObject(m_fields->m_obj, true);
583+
m_fields->m_obj = nullptr;
584+
} else {
585+
TextGameObject* obj = static_cast<TextGameObject*>(editor->m_editorUI->createObject(914, {0, 0}));
586+
obj->m_isHide = true;
587+
obj->updateTextObject("--enable-joystick", false);
588+
m_fields->m_obj = obj;
589+
}
590+
});
591+
toggler->toggle(m_fields->m_obj != nullptr);
592+
toggler->setCascadeOpacityEnabled(true);
593+
toggler->setEnabled(m_settingsObject->m_platformerMode);
594+
toggler->setOpacity(m_settingsObject->m_platformerMode ? 255 : 100);
595+
m_buttonMenu->addChildAtPosition(toggler, Anchor::BottomLeft, {-185, -120}, false);
596+
m_fields->m_toggle = toggler;
597+
CCLabelBMFont* lab = CCLabelBMFont::create("Joystick:", "goldFont.fnt");
598+
lab->setScale(.6f);
599+
m_mainLayer->addChildAtPosition(lab, Anchor::Center, {-185, -95}, false);
600+
return true;
601+
}
602+
603+
void updateGameplayModeButtons() {
604+
LevelSettingsLayer::updateGameplayModeButtons();
605+
auto toggler = m_fields->m_toggle;
606+
if (!toggler) return;
607+
auto editor = m_editorLayer;
608+
toggler->setEnabled(m_settingsObject->m_platformerMode);
609+
toggler->setOpacity(m_settingsObject->m_platformerMode ? 255 : 100);
610+
}
611+
555612
};

0 commit comments

Comments
 (0)