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