diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..cb4f10b --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,54 @@ +name: Build Geode Mod + +on: + workflow_dispatch: + push: + branches: + - '**' + +jobs: + build: + strategy: + fail-fast: false + matrix: + config: + - name: Windows + os: windows-latest + + #- name: macOS + # os: macos-latest + + - name: Android32 + os: ubuntu-latest + target: Android32 + + - name: Android64 + os: ubuntu-latest + target: Android64 + + name: ${{ matrix.config.name }} + runs-on: ${{ matrix.config.os }} + + steps: + - uses: actions/checkout@v3 + + - name: Build the mod + uses: geode-sdk/build-geode-mod@main + with: + sdk: nightly + combine: true + target: ${{ matrix.config.target }} + + package: + name: Package builds + runs-on: ubuntu-latest + needs: ['build'] + + steps: + - uses: geode-sdk/build-geode-mod@combine + id: build + + - uses: actions/upload-artifact@v3 + with: + name: Build Output + path: ${{ steps.build.outputs.build-output }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..014665d --- /dev/null +++ b/.gitignore @@ -0,0 +1,53 @@ +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +# Macos be like +**/.DS_Store + +# Cache files for Sublime Text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# Ignore build folders +**/build + +# Workspace files are user-specific +*.sublime-workspace + +# ILY vscode +**/.vscode +.idea/ + +# clangd +.cache/ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..6adf978 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 3.21) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_OSX_ARCHITECTURES "x86_64") +set(CMAKE_CXX_VISIBILITY_PRESET hidden) + +project(HideMainMenuUI VERSION 1.0.0) + +add_library(${PROJECT_NAME} SHARED + src/main.cpp + # Add your cpp files here +) + +if (NOT DEFINED ENV{GEODE_SDK}) + message(FATAL_ERROR "Unable to find Geode SDK! Please define GEODE_SDK environment variable to point to Geode") +else() + message(STATUS "Found Geode: $ENV{GEODE_SDK}") +endif() + +add_subdirectory($ENV{GEODE_SDK} ${CMAKE_CURRENT_BINARY_DIR}/geode) + +setup_geode_mod(${PROJECT_NAME}) diff --git a/README.md b/README.md new file mode 100644 index 0000000..cb68a33 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Hide Main Menu UI + +Adds a button to the main menu that hides the UI! \ No newline at end of file diff --git a/about.md b/about.md new file mode 100644 index 0000000..cb68a33 --- /dev/null +++ b/about.md @@ -0,0 +1,3 @@ +# Hide Main Menu UI + +Adds a button to the main menu that hides the UI! \ No newline at end of file diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..25bb369 Binary files /dev/null and b/logo.png differ diff --git a/mod.json b/mod.json new file mode 100644 index 0000000..31e7bf3 --- /dev/null +++ b/mod.json @@ -0,0 +1,17 @@ +{ + "geode": "2.0.0-beta.15", + "gd": "2.204", + "version": "v1.0.0", + "id": "capeling.hide_main_menu_ui", + "name": "Hide Main Menu UI", + "developer": "Capeling", + "description": "Adds a button to the main menu that hides the UI!", + "resources": { + "spritesheets": { + "EyeSheet": [ + "resources/eye_closed.png", + "resources/eye_open.png" + ] + } + } +} \ No newline at end of file diff --git a/resources/eye_closed.png b/resources/eye_closed.png new file mode 100644 index 0000000..17ac857 Binary files /dev/null and b/resources/eye_closed.png differ diff --git a/resources/eye_open.png b/resources/eye_open.png new file mode 100644 index 0000000..9cfa65a Binary files /dev/null and b/resources/eye_open.png differ diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..294b32b --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,56 @@ +#include +#include + +using namespace geode::prelude; + +class $modify(MenuLayerExt, MenuLayer) { + + bool m_isHidden = false; + CCSprite* m_eyeSprite; + CCMenuItemToggler* m_eyeButton; + CCMenu* m_eyeMenu; + + bool init() { + if(!MenuLayer::init()) + return false; + auto winSize = CCDirector::sharedDirector()->getWinSize(); + auto on = CircleButtonSprite::create(CCSprite::createWithSpriteFrameName("eye_open.png"_spr), CircleBaseColor::Green, CircleBaseSize::Small); + + auto offEye = CCSprite::createWithSpriteFrameName("eye_closed.png"_spr); + offEye->setOpacity(255 / 2.5); + + auto off = CircleButtonSprite::create(offEye, CircleBaseColor::Gray, CircleBaseSize::Small); + off->setOpacity(255 / 2.5); + + m_eyeButton = CCMenuItemToggler::create(on, off, this, menu_selector(MenuLayerExt::onToggleHide)); + m_eyeMenu = CCMenu::create(); + + m_eyeMenu->setPosition({winSize.width - 25, winSize.height - 25}); + m_eyeMenu->setID("hide-ui-menu"); + + m_eyeMenu->addChild(m_eyeButton); + addChild(m_eyeMenu); + return true; + } + + void onToggleHide(CCObject* sender) { + m_isHidden = !m_isHidden; + MenuLayerExt::updateMenu(); + } + + void updateMenu() { + if(m_isHidden) { + for(int i = 0; i < this->getChildrenCount(); i++) { + auto node = static_cast(this->getChildren()->objectAtIndex(i)); + + if(node->getID() != "main-menu-bg" && node->getID() != "hide-ui-menu") + node->setVisible(false); + } + } else { + for(int i = 0; i < this->getChildrenCount(); i++) { + auto node = static_cast(this->getChildren()->objectAtIndex(i)); + node->setVisible(true); + } + } + } +};