From 54b00bd4f9ca7edd74f20248d4a8362b792542a8 Mon Sep 17 00:00:00 2001 From: MineDg2665 Date: Sun, 6 Sep 2026 22:02:08 +0400 Subject: [PATCH] Added controller support --- modifiedeight-newadditions/CMakeLists.txt | 1 + .../assets/lang/en_US.lang | 2 + .../headers/Options.hpp | 6 +- .../headers/gui/ControllerLayoutOption.hpp | 19 + .../headers/gui/OptionsGroup.hpp | 1 + .../headers/gui/buttons/SmallButton.hpp | 5 +- .../gui/screens/ControllerLayoutScreen.hpp | 57 ++ .../headers/gui/screens/OptionsScreen.hpp | 2 + .../headers/gui/screens/PauseScreen.hpp | 1 + .../headers/input/ControllerHandler.hpp | 38 ++ .../headers/input/ControllerLayout.hpp | 42 ++ .../headers/input/Gamepad.hpp | 101 ++++ .../impl/AppPlatform_sdl.cpp | 246 +++------ modifiedeight-newadditions/impl/I18n.cpp | 28 +- modifiedeight-newadditions/impl/Minecraft.cpp | 4 + modifiedeight-newadditions/impl/Options.cpp | 50 +- modifiedeight-newadditions/impl/_pengine.cpp | 77 +++ .../impl/gui/ControllerLayoutOption.cpp | 49 ++ .../impl/gui/OptionsGroup.cpp | 6 + .../gui/screens/ControllerLayoutScreen.cpp | 499 ++++++++++++++++++ .../impl/gui/screens/OptionsScreen.cpp | 9 +- .../impl/gui/screens/PauseScreen.cpp | 6 + .../impl/input/ControllerHandler.cpp | 366 +++++++++++++ .../impl/input/ControllerLayout.cpp | 148 ++++++ .../impl/input/Gamepad.cpp | 412 +++++++++++++++ .../impl/input/KeyboardInput.cpp | 2 + .../impl/input/TouchscreenInput.cpp | 2 + .../impl/rendering/GameRenderer.cpp | 10 + modifiedeight/CMakeLists.txt | 1 + modifiedeight/headers/Options.hpp | 4 + .../headers/gui/ControllerLayoutOption.hpp | 19 + modifiedeight/headers/gui/OptionsGroup.hpp | 1 + .../headers/gui/buttons/SmallButton.hpp | 5 +- .../gui/screens/ControllerLayoutScreen.hpp | 57 ++ .../headers/gui/screens/OptionsScreen.hpp | 2 + .../headers/gui/screens/PauseScreen.hpp | 1 + .../headers/input/ControllerHandler.hpp | 38 ++ .../headers/input/ControllerLayout.hpp | 42 ++ modifiedeight/headers/input/Gamepad.hpp | 101 ++++ modifiedeight/impl/AppPlatform_sdl.cpp | 88 +++ modifiedeight/impl/I18n.cpp | 26 + modifiedeight/impl/Minecraft.cpp | 4 + modifiedeight/impl/Options.cpp | 43 ++ modifiedeight/impl/_pengine.cpp | 77 +++ .../impl/gui/ControllerLayoutOption.cpp | 49 ++ modifiedeight/impl/gui/OptionsGroup.cpp | 6 + .../gui/screens/ControllerLayoutScreen.cpp | 499 ++++++++++++++++++ .../impl/gui/screens/OptionsScreen.cpp | 9 +- .../impl/gui/screens/PauseScreen.cpp | 6 + .../impl/input/ControllerHandler.cpp | 366 +++++++++++++ modifiedeight/impl/input/ControllerLayout.cpp | 148 ++++++ modifiedeight/impl/input/Gamepad.cpp | 412 +++++++++++++++ modifiedeight/impl/input/KeyboardInput.cpp | 2 + modifiedeight/impl/input/TouchscreenInput.cpp | 2 + modifiedeight/impl/rendering/GameRenderer.cpp | 10 + .../app/src/classic/assets/lang/en_US.lang | 2 + .../src/newadditions/assets/lang/en_US.lang | 2 + platforms/ios/AGENTS.md | 12 + platforms/ios/GamepadMFi.h | 3 + platforms/ios/GamepadMFi.mm | 57 ++ platforms/ios/main.mm | 2 + 61 files changed, 4089 insertions(+), 196 deletions(-) create mode 100644 modifiedeight-newadditions/headers/gui/ControllerLayoutOption.hpp create mode 100644 modifiedeight-newadditions/headers/gui/screens/ControllerLayoutScreen.hpp create mode 100644 modifiedeight-newadditions/headers/input/ControllerHandler.hpp create mode 100644 modifiedeight-newadditions/headers/input/ControllerLayout.hpp create mode 100644 modifiedeight-newadditions/headers/input/Gamepad.hpp create mode 100644 modifiedeight-newadditions/impl/gui/ControllerLayoutOption.cpp create mode 100644 modifiedeight-newadditions/impl/gui/screens/ControllerLayoutScreen.cpp create mode 100644 modifiedeight-newadditions/impl/input/ControllerHandler.cpp create mode 100644 modifiedeight-newadditions/impl/input/ControllerLayout.cpp create mode 100644 modifiedeight-newadditions/impl/input/Gamepad.cpp create mode 100644 modifiedeight/headers/gui/ControllerLayoutOption.hpp create mode 100644 modifiedeight/headers/gui/screens/ControllerLayoutScreen.hpp create mode 100644 modifiedeight/headers/input/ControllerHandler.hpp create mode 100644 modifiedeight/headers/input/ControllerLayout.hpp create mode 100644 modifiedeight/headers/input/Gamepad.hpp create mode 100644 modifiedeight/impl/gui/ControllerLayoutOption.cpp create mode 100644 modifiedeight/impl/gui/screens/ControllerLayoutScreen.cpp create mode 100644 modifiedeight/impl/input/ControllerHandler.cpp create mode 100644 modifiedeight/impl/input/ControllerLayout.cpp create mode 100644 modifiedeight/impl/input/Gamepad.cpp create mode 100644 platforms/ios/GamepadMFi.h create mode 100644 platforms/ios/GamepadMFi.mm diff --git a/modifiedeight-newadditions/CMakeLists.txt b/modifiedeight-newadditions/CMakeLists.txt index 903edb28..6ef476c7 100644 --- a/modifiedeight-newadditions/CMakeLists.txt +++ b/modifiedeight-newadditions/CMakeLists.txt @@ -104,6 +104,7 @@ elseif(MCPE_IOS) "-framework OpenGLES" "-framework OpenAL" "-framework AVFoundation" + "-framework GameController" ) set_target_properties(modifiedeight-newadditions PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/build" diff --git a/modifiedeight-newadditions/assets/lang/en_US.lang b/modifiedeight-newadditions/assets/lang/en_US.lang index 44858e46..cd92b83f 100644 --- a/modifiedeight-newadditions/assets/lang/en_US.lang +++ b/modifiedeight-newadditions/assets/lang/en_US.lang @@ -160,6 +160,8 @@ options.gamma.min=Moody options.gamma.max=Bright options.hidegui=Hide GUI options.sensitivity=Sensitivity +options.controllersensitivity=Controller Sensitivity +options.controllercursorsensitivity=Controller Cursor Sensitivity options.sensitivity.min=*yawn* options.sensitivity.max=HYPERSPEED!!! options.renderDistance=View Distance diff --git a/modifiedeight-newadditions/headers/Options.hpp b/modifiedeight-newadditions/headers/Options.hpp index 09d81e66..f8b50bbc 100644 --- a/modifiedeight-newadditions/headers/Options.hpp +++ b/modifiedeight-newadditions/headers/Options.hpp @@ -16,6 +16,8 @@ struct Options{ static Options::Option FANCY_SKIES; static Options::Option LEFT_HANDED; static Options::Option SENSITIVITY; + static Options::Option CONTROLLER_SENSITIVITY; + static Options::Option CONTROLLER_CURSOR_SENSITIVITY; static Options::Option INVERT_MOUSE; static Options::Option THIRD_PERSON; static Options::Option VIEW_BOBBING; @@ -70,7 +72,6 @@ struct Options{ static Options::Option REALISM_SCREEN_SPACE_LIGHTING; static Options::Option REALISM_BLOOM; static Options::Option EXTENDED_INVENTORY; - static Options::Option CONTROLLER_SUPPORT; }; static Options* instance; @@ -79,6 +80,8 @@ struct Options{ float soundVolume; float brightness; float sensitity; + float controllerSensitivity; + float controllerCursorSensitivity; bool_t invertMouse; char_t field_D; char_t field_E; @@ -162,7 +165,6 @@ struct Options{ bool_t realismSSL; bool_t realismBloom; bool_t extendedInventory; - bool_t controllerSupport; char_t field_109; char_t field_10A; char_t field_10B; diff --git a/modifiedeight-newadditions/headers/gui/ControllerLayoutOption.hpp b/modifiedeight-newadditions/headers/gui/ControllerLayoutOption.hpp new file mode 100644 index 00000000..0cc62665 --- /dev/null +++ b/modifiedeight-newadditions/headers/gui/ControllerLayoutOption.hpp @@ -0,0 +1,19 @@ +#pragma once +#include +#include + +struct Button; +struct ControllerLayoutOption: GuiElementContainer +{ + std::shared_ptr