From ffec2e8d74799acd6c7d9d856b98998ad613726e Mon Sep 17 00:00:00 2001 From: Andy Lanzone Date: Fri, 4 Jul 2025 14:38:55 -0700 Subject: [PATCH] Automatically show Xbox, PS, or Switch button icons --- apps/openmw/mwbase/inputmanager.hpp | 2 + .../openmw/mwgui/controllerbuttonsoverlay.cpp | 24 ++++ .../openmw/mwgui/controllerbuttonsoverlay.hpp | 1 + apps/openmw/mwgui/inventorytabsoverlay.cpp | 12 ++ apps/openmw/mwgui/inventorywindow.cpp | 7 +- apps/openmw/mwgui/tradewindow.cpp | 8 +- apps/openmw/mwinput/controllermanager.cpp | 114 ++++++++++++++++++ apps/openmw/mwinput/controllermanager.hpp | 5 + apps/openmw/mwinput/inputmanagerimp.cpp | 10 ++ apps/openmw/mwinput/inputmanagerimp.hpp | 2 + files/data/CMakeLists.txt | 13 ++ files/data/mygui/openmw_inventory_tabs.layout | 4 +- files/data/textures/omw_psx_button_circle.dds | Bin 0 -> 22000 bytes files/data/textures/omw_psx_button_dpad.dds | Bin 0 -> 22000 bytes files/data/textures/omw_psx_button_square.dds | Bin 0 -> 22000 bytes .../data/textures/omw_psx_button_triangle.dds | Bin 0 -> 22000 bytes files/data/textures/omw_psx_button_x.dds | Bin 0 -> 22000 bytes files/data/textures/omw_steam_button_l1.dds | Bin 22000 -> 22000 bytes files/data/textures/omw_steam_button_r1.dds | Bin 22000 -> 22000 bytes files/data/textures/omw_switch_button_l.dds | Bin 0 -> 22000 bytes files/data/textures/omw_switch_button_r.dds | Bin 0 -> 22000 bytes files/data/textures/omw_switch_button_zl.dds | Bin 0 -> 22000 bytes files/data/textures/omw_switch_button_zr.dds | Bin 0 -> 22000 bytes files/data/textures/omw_xbox_button_lb.dds | Bin 0 -> 22000 bytes files/data/textures/omw_xbox_button_lt.dds | Bin 0 -> 22000 bytes files/data/textures/omw_xbox_button_rb.dds | Bin 0 -> 22000 bytes files/data/textures/omw_xbox_button_rt.dds | Bin 0 -> 22000 bytes 27 files changed, 198 insertions(+), 4 deletions(-) create mode 100644 files/data/textures/omw_psx_button_circle.dds create mode 100644 files/data/textures/omw_psx_button_dpad.dds create mode 100644 files/data/textures/omw_psx_button_square.dds create mode 100644 files/data/textures/omw_psx_button_triangle.dds create mode 100644 files/data/textures/omw_psx_button_x.dds create mode 100644 files/data/textures/omw_switch_button_l.dds create mode 100644 files/data/textures/omw_switch_button_r.dds create mode 100644 files/data/textures/omw_switch_button_zl.dds create mode 100644 files/data/textures/omw_switch_button_zr.dds create mode 100644 files/data/textures/omw_xbox_button_lb.dds create mode 100644 files/data/textures/omw_xbox_button_lt.dds create mode 100644 files/data/textures/omw_xbox_button_rb.dds create mode 100644 files/data/textures/omw_xbox_button_rt.dds diff --git a/apps/openmw/mwbase/inputmanager.hpp b/apps/openmw/mwbase/inputmanager.hpp index f5adc42340..4358c7a1e0 100644 --- a/apps/openmw/mwbase/inputmanager.hpp +++ b/apps/openmw/mwbase/inputmanager.hpp @@ -79,6 +79,8 @@ namespace MWBase /// @return true if joystick, false otherwise virtual bool joystickLastUsed() = 0; virtual void setJoystickLastUsed(bool enabled) = 0; + virtual std::string getControllerButtonIcon(int button) = 0; + virtual std::string getControllerAxisIcon(int axis) = 0; virtual int countSavedGameRecords() const = 0; virtual void write(ESM::ESMWriter& writer, Loading::Listener& progress) = 0; diff --git a/apps/openmw/mwgui/controllerbuttonsoverlay.cpp b/apps/openmw/mwgui/controllerbuttonsoverlay.cpp index 9466f40105..065fb46d77 100644 --- a/apps/openmw/mwgui/controllerbuttonsoverlay.cpp +++ b/apps/openmw/mwgui/controllerbuttonsoverlay.cpp @@ -1,6 +1,7 @@ #include "controllerbuttonsoverlay.hpp" #include "../mwbase/environment.hpp" +#include "../mwbase/inputmanager.hpp" #include "../mwbase/windowmanager.hpp" namespace MWGui @@ -8,50 +9,67 @@ namespace MWGui ControllerButtonsOverlay::ControllerButtonsOverlay() : WindowBase("openmw_controllerbuttons.layout") { + MWBase::InputManager* inputMgr = MWBase::Environment::get().getInputManager(); + getWidget(mImageA, "BtnAImage"); getWidget(mTextA, "BtnAText"); + setIcon(mImageA, inputMgr->getControllerButtonIcon(SDL_CONTROLLER_BUTTON_A)); getWidget(mImageB, "BtnBImage"); getWidget(mTextB, "BtnBText"); + setIcon(mImageB, inputMgr->getControllerButtonIcon(SDL_CONTROLLER_BUTTON_B)); getWidget(mImageDpad, "BtnDpadImage"); getWidget(mTextDpad, "BtnDpadText"); + setIcon(mImageDpad, inputMgr->getControllerButtonIcon(SDL_CONTROLLER_BUTTON_DPAD_UP)); getWidget(mImageL1, "BtnL1Image"); getWidget(mTextL1, "BtnL1Text"); + setIcon(mImageL1, inputMgr->getControllerButtonIcon(SDL_CONTROLLER_BUTTON_LEFTSHOULDER)); getWidget(mImageL2, "BtnL2Image"); getWidget(mTextL2, "BtnL2Text"); + setIcon(mImageL2, inputMgr->getControllerAxisIcon(SDL_CONTROLLER_AXIS_TRIGGERLEFT)); getWidget(mImageL3, "BtnL3Image"); getWidget(mTextL3, "BtnL3Text"); + setIcon(mImageL3, inputMgr->getControllerButtonIcon(SDL_CONTROLLER_BUTTON_LEFTSTICK)); getWidget(mImageLStick, "BtnLStickImage"); getWidget(mTextLStick, "BtnLStickText"); + setIcon(mImageLStick, inputMgr->getControllerAxisIcon(SDL_CONTROLLER_AXIS_LEFTY)); getWidget(mImageMenu, "BtnMenuImage"); getWidget(mTextMenu, "BtnMenuText"); + setIcon(mImageMenu, inputMgr->getControllerButtonIcon(SDL_CONTROLLER_BUTTON_BACK)); getWidget(mImageR1, "BtnR1Image"); getWidget(mTextR1, "BtnR1Text"); + setIcon(mImageR1, inputMgr->getControllerButtonIcon(SDL_CONTROLLER_BUTTON_RIGHTSHOULDER)); getWidget(mImageR2, "BtnR2Image"); getWidget(mTextR2, "BtnR2Text"); + setIcon(mImageR2, inputMgr->getControllerAxisIcon(SDL_CONTROLLER_AXIS_TRIGGERRIGHT)); getWidget(mImageR3, "BtnR3Image"); getWidget(mTextR3, "BtnR3Text"); + setIcon(mImageR3, inputMgr->getControllerButtonIcon(SDL_CONTROLLER_BUTTON_RIGHTSTICK)); getWidget(mImageRStick, "BtnRStickImage"); getWidget(mTextRStick, "BtnRStickText"); + setIcon(mImageRStick, inputMgr->getControllerAxisIcon(SDL_CONTROLLER_AXIS_RIGHTY)); getWidget(mImageView, "BtnViewImage"); getWidget(mTextView, "BtnViewText"); + setIcon(mImageView, inputMgr->getControllerButtonIcon(SDL_CONTROLLER_BUTTON_START)); getWidget(mImageX, "BtnXImage"); getWidget(mTextX, "BtnXText"); + setIcon(mImageX, inputMgr->getControllerButtonIcon(SDL_CONTROLLER_BUTTON_X)); getWidget(mImageY, "BtnYImage"); getWidget(mTextY, "BtnYText"); + setIcon(mImageY, inputMgr->getControllerButtonIcon(SDL_CONTROLLER_BUTTON_Y)); getWidget(mHBox, "ButtonBox"); } @@ -79,6 +97,12 @@ namespace MWGui setVisible(buttonCount > 0); } + void ControllerButtonsOverlay::setIcon(MyGUI::ImageBox* image, const std::string& imagePath) + { + if (imagePath.length() > 0) + image->setImageTexture(imagePath); + } + int ControllerButtonsOverlay::updateButton( MyGUI::TextBox* text, MyGUI::ImageBox* image, const std::string& buttonStr) { diff --git a/apps/openmw/mwgui/controllerbuttonsoverlay.hpp b/apps/openmw/mwgui/controllerbuttonsoverlay.hpp index 7008384bee..700cf0c147 100644 --- a/apps/openmw/mwgui/controllerbuttonsoverlay.hpp +++ b/apps/openmw/mwgui/controllerbuttonsoverlay.hpp @@ -65,6 +65,7 @@ namespace MWGui Gui::HBox* mHBox; + void setIcon(MyGUI::ImageBox* image, const std::string& imagePath); int updateButton(MyGUI::TextBox* text, MyGUI::ImageBox* image, const std::string& buttonStr); }; } diff --git a/apps/openmw/mwgui/inventorytabsoverlay.cpp b/apps/openmw/mwgui/inventorytabsoverlay.cpp index 35b4d1d87f..062e7dbcb4 100644 --- a/apps/openmw/mwgui/inventorytabsoverlay.cpp +++ b/apps/openmw/mwgui/inventorytabsoverlay.cpp @@ -1,6 +1,9 @@ #include "inventorytabsoverlay.hpp" +#include + #include "../mwbase/environment.hpp" +#include "../mwbase/inputmanager.hpp" #include "../mwbase/windowmanager.hpp" namespace MWGui @@ -25,6 +28,15 @@ namespace MWGui getWidget(tab, "TabStats"); tab->eventMouseButtonClick += MyGUI::newDelegate(this, &InventoryTabsOverlay::onTabClicked); mTabs.push_back(tab); + + MyGUI::ImageBox* image; + getWidget(image, "BtnL2Image"); + image->setImageTexture( + MWBase::Environment::get().getInputManager()->getControllerAxisIcon(SDL_CONTROLLER_AXIS_TRIGGERLEFT)); + + getWidget(image, "BtnR2Image"); + image->setImageTexture( + MWBase::Environment::get().getInputManager()->getControllerAxisIcon(SDL_CONTROLLER_AXIS_TRIGGERRIGHT)); } void InventoryTabsOverlay::onTabClicked(MyGUI::Widget* sender) diff --git a/apps/openmw/mwgui/inventorywindow.cpp b/apps/openmw/mwgui/inventorywindow.cpp index a398139df4..9ffed95aa1 100644 --- a/apps/openmw/mwgui/inventorywindow.cpp +++ b/apps/openmw/mwgui/inventorywindow.cpp @@ -19,6 +19,7 @@ #include #include "../mwbase/environment.hpp" +#include "../mwbase/inputmanager.hpp" #include "../mwbase/luamanager.hpp" #include "../mwbase/mechanicsmanager.hpp" #include "../mwbase/windowmanager.hpp" @@ -133,14 +134,18 @@ namespace MWGui if (Settings::gui().mControllerMenus) { // Show L1 and R1 buttons next to tabs - MyGUI::Widget* image; + MyGUI::ImageBox* image; getWidget(image, "BtnL1Image"); image->setVisible(true); image->setUserString("Hidden", "false"); + image->setImageTexture(MWBase::Environment::get().getInputManager()->getControllerButtonIcon( + SDL_CONTROLLER_BUTTON_LEFTSHOULDER)); getWidget(image, "BtnR1Image"); image->setVisible(true); image->setUserString("Hidden", "false"); + image->setImageTexture(MWBase::Environment::get().getInputManager()->getControllerButtonIcon( + SDL_CONTROLLER_BUTTON_RIGHTSHOULDER)); mControllerButtons.r3 = "#{sInfo}"; } diff --git a/apps/openmw/mwgui/tradewindow.cpp b/apps/openmw/mwgui/tradewindow.cpp index c26a7f030a..3e6e886b9d 100644 --- a/apps/openmw/mwgui/tradewindow.cpp +++ b/apps/openmw/mwgui/tradewindow.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -11,6 +12,7 @@ #include "../mwbase/dialoguemanager.hpp" #include "../mwbase/environment.hpp" +#include "../mwbase/inputmanager.hpp" #include "../mwbase/mechanicsmanager.hpp" #include "../mwbase/windowmanager.hpp" #include "../mwbase/world.hpp" @@ -172,14 +174,18 @@ namespace MWGui if (Settings::gui().mControllerMenus) { // Show L1 and R1 buttons next to tabs - MyGUI::Widget* image; + MyGUI::ImageBox* image; getWidget(image, "BtnL1Image"); image->setVisible(true); image->setUserString("Hidden", "false"); + image->setImageTexture(MWBase::Environment::get().getInputManager()->getControllerButtonIcon( + SDL_CONTROLLER_BUTTON_LEFTSHOULDER)); getWidget(image, "BtnR1Image"); image->setVisible(true); image->setUserString("Hidden", "false"); + image->setImageTexture(MWBase::Environment::get().getInputManager()->getControllerButtonIcon( + SDL_CONTROLLER_BUTTON_RIGHTSHOULDER)); mControllerButtons.a = "#{sBuy}"; mControllerButtons.b = "#{sCancel}"; diff --git a/apps/openmw/mwinput/controllermanager.cpp b/apps/openmw/mwinput/controllermanager.cpp index 9962c639ad..68cd9a7dbd 100644 --- a/apps/openmw/mwinput/controllermanager.cpp +++ b/apps/openmw/mwinput/controllermanager.cpp @@ -465,6 +465,120 @@ namespace MWInput return std::array({ gyro[0], gyro[1], gyro[2] }); } + int ControllerManager::getControllerType() + { + int type = 0; +#if SDL_VERSION_ATLEAST(2, 0, 12) + SDL_GameController* cntrl = mBindingsManager->getControllerOrNull(); + if (cntrl) + type = SDL_GameControllerGetType(cntrl); +#endif + return type; + } + + std::string ControllerManager::getControllerButtonIcon(int button) + { + int controllerType = ControllerManager::getControllerType(); + + bool isXbox = false; + bool isPsx = false; + bool isSwitch = false; + +#if SDL_VERSION_ATLEAST(2, 0, 12) + isXbox = controllerType == SDL_CONTROLLER_TYPE_XBOX360 || controllerType == SDL_CONTROLLER_TYPE_XBOXONE; + isPsx = controllerType == SDL_CONTROLLER_TYPE_PS3 || controllerType == SDL_CONTROLLER_TYPE_PS4 + || controllerType == SDL_CONTROLLER_TYPE_PS5; + isSwitch = controllerType == SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO; +#endif + + switch (button) + { + case SDL_CONTROLLER_BUTTON_A: + if (isPsx) + return "textures/omw_psx_button_x.dds"; + return "textures/omw_steam_button_a.dds"; + case SDL_CONTROLLER_BUTTON_B: + if (isPsx) + return "textures/omw_psx_button_circle.dds"; + return "textures/omw_steam_button_b.dds"; + case SDL_CONTROLLER_BUTTON_BACK: + return "textures/omw_steam_button_view.dds"; + case SDL_CONTROLLER_BUTTON_DPAD_DOWN: + case SDL_CONTROLLER_BUTTON_DPAD_LEFT: + case SDL_CONTROLLER_BUTTON_DPAD_RIGHT: + case SDL_CONTROLLER_BUTTON_DPAD_UP: + if (isPsx) + return "textures/omw_psx_button_dpad.dds"; + return "textures/omw_steam_button_dpad.dds"; + case SDL_CONTROLLER_BUTTON_LEFTSHOULDER: + if (isXbox) + return "textures/omw_xbox_button_lb.dds"; + else if (isSwitch) + return "textures/omw_switch_button_l.dds"; + return "textures/omw_steam_button_l1.dds"; + case SDL_CONTROLLER_BUTTON_LEFTSTICK: + return "textures/omw_steam_button_l3.dds"; + case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER: + if (isXbox) + return "textures/omw_xbox_button_rb.dds"; + else if (isSwitch) + return "textures/omw_switch_button_r.dds"; + return "textures/omw_steam_button_r1.dds"; + case SDL_CONTROLLER_BUTTON_RIGHTSTICK: + return "textures/omw_steam_button_r3.dds"; + case SDL_CONTROLLER_BUTTON_START: + return "textures/omw_steam_button_menu.dds"; + case SDL_CONTROLLER_BUTTON_X: + if (isPsx) + return "textures/omw_psx_button_square.dds"; + return "textures/omw_steam_button_x.dds"; + case SDL_CONTROLLER_BUTTON_Y: + if (isPsx) + return "textures/omw_psx_button_triangle.dds"; + return "textures/omw_steam_button_y.dds"; + case SDL_CONTROLLER_BUTTON_GUIDE: + default: + return ""; + } + } + + std::string ControllerManager::getControllerAxisIcon(int axis) + { + int controllerType = ControllerManager::getControllerType(); + + bool isXbox = false; + bool isSwitch = false; + +#if SDL_VERSION_ATLEAST(2, 0, 12) + isXbox = controllerType == SDL_CONTROLLER_TYPE_XBOX360 || controllerType == SDL_CONTROLLER_TYPE_XBOXONE; + isSwitch = controllerType == SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO; +#endif + + switch (axis) + { + case SDL_CONTROLLER_AXIS_LEFTX: + case SDL_CONTROLLER_AXIS_LEFTY: + return "textures/omw_steam_button_lstick.dds"; + case SDL_CONTROLLER_AXIS_RIGHTX: + case SDL_CONTROLLER_AXIS_RIGHTY: + return "textures/omw_steam_button_rstick.dds"; + case SDL_CONTROLLER_AXIS_TRIGGERLEFT: + if (isXbox) + return "textures/omw_xbox_button_lt.dds"; + else if (isSwitch) + return "textures/omw_switch_button_zl.dds"; + return "textures/omw_steam_button_l2.dds"; + case SDL_CONTROLLER_AXIS_TRIGGERRIGHT: + if (isXbox) + return "textures/omw_xbox_button_rt.dds"; + else if (isSwitch) + return "textures/omw_switch_button_zr.dds"; + return "textures/omw_steam_button_r2.dds"; + default: + return ""; + } + } + void ControllerManager::touchpadMoved(int deviceId, const SDLUtil::TouchEvent& arg) { MWBase::Environment::get().getLuaManager()->inputEvent({ MWBase::LuaManager::InputEvent::TouchMoved, arg }); diff --git a/apps/openmw/mwinput/controllermanager.hpp b/apps/openmw/mwinput/controllermanager.hpp index 670a3c846f..535ee85fd5 100644 --- a/apps/openmw/mwinput/controllermanager.hpp +++ b/apps/openmw/mwinput/controllermanager.hpp @@ -48,6 +48,9 @@ namespace MWInput bool isGyroAvailable() const; std::array getGyroValues() const; + std::string getControllerButtonIcon(int button); + std::string getControllerAxisIcon(int axis); + private: // Return true if GUI consumes input. bool gamepadToGuiControl(const SDL_ControllerButtonEvent& arg); @@ -55,6 +58,8 @@ namespace MWInput void enableGyroSensor(); + int getControllerType(); + BindingsManager* mBindingsManager; MouseManager* mMouseManager; diff --git a/apps/openmw/mwinput/inputmanagerimp.cpp b/apps/openmw/mwinput/inputmanagerimp.cpp index 12d56a3321..7a82c96d09 100644 --- a/apps/openmw/mwinput/inputmanagerimp.cpp +++ b/apps/openmw/mwinput/inputmanagerimp.cpp @@ -249,6 +249,16 @@ namespace MWInput return mControllerManager->joystickLastUsed(); } + std::string InputManager::getControllerButtonIcon(int button) + { + return mControllerManager->getControllerButtonIcon(button); + } + + std::string InputManager::getControllerAxisIcon(int axis) + { + return mControllerManager->getControllerAxisIcon(axis); + } + void InputManager::executeAction(int action) { mActionManager->executeAction(action); diff --git a/apps/openmw/mwinput/inputmanagerimp.hpp b/apps/openmw/mwinput/inputmanagerimp.hpp index b2899e6831..27a938f1ea 100644 --- a/apps/openmw/mwinput/inputmanagerimp.hpp +++ b/apps/openmw/mwinput/inputmanagerimp.hpp @@ -92,6 +92,8 @@ namespace MWInput void setJoystickLastUsed(bool enabled) override; bool joystickLastUsed() override; + std::string getControllerButtonIcon(int button) override; + std::string getControllerAxisIcon(int axis) override; int countSavedGameRecords() const override; void write(ESM::ESMWriter& writer, Loading::Listener& progress) override; diff --git a/files/data/CMakeLists.txt b/files/data/CMakeLists.txt index b1da9f6756..6038e8cdc8 100644 --- a/files/data/CMakeLists.txt +++ b/files/data/CMakeLists.txt @@ -10,6 +10,11 @@ set(BUILTIN_DATA_FILES textures/omw_menu_scroll_center_h.dds textures/omw_menu_scroll_center_v.dds textures/omw_menu_icon_active.dds + textures/omw_psx_button_circle.dds + textures/omw_psx_button_dpad.dds + textures/omw_psx_button_square.dds + textures/omw_psx_button_triangle.dds + textures/omw_psx_button_x.dds textures/omw_steam_button_a.dds textures/omw_steam_button_b.dds textures/omw_steam_button_dpad.dds @@ -25,6 +30,14 @@ set(BUILTIN_DATA_FILES textures/omw_steam_button_view.dds textures/omw_steam_button_x.dds textures/omw_steam_button_y.dds + textures/omw_switch_button_l.dds + textures/omw_switch_button_r.dds + textures/omw_switch_button_zl.dds + textures/omw_switch_button_zr.dds + textures/omw_xbox_button_lb.dds + textures/omw_xbox_button_lt.dds + textures/omw_xbox_button_rb.dds + textures/omw_xbox_button_rt.dds textures/omw/water_nm.png fonts/DejaVuFontLicense.txt diff --git a/files/data/mygui/openmw_inventory_tabs.layout b/files/data/mygui/openmw_inventory_tabs.layout index 3787452586..d13361d5db 100644 --- a/files/data/mygui/openmw_inventory_tabs.layout +++ b/files/data/mygui/openmw_inventory_tabs.layout @@ -10,7 +10,7 @@ - + @@ -39,7 +39,7 @@ - + diff --git a/files/data/textures/omw_psx_button_circle.dds b/files/data/textures/omw_psx_button_circle.dds new file mode 100644 index 0000000000000000000000000000000000000000..53d9856a28011ef55ca3eb49f745a6488a02a33c GIT binary patch literal 22000 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 literal 0 HcmV?d00001 diff --git a/files/data/textures/omw_psx_button_dpad.dds b/files/data/textures/omw_psx_button_dpad.dds new file mode 100644 index 0000000000000000000000000000000000000000..b5f74b5153538c9234b86e68dd16357bbf306601 GIT binary patch literal 22000 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 literal 0 HcmV?d00001 diff --git a/files/data/textures/omw_psx_button_x.dds b/files/data/textures/omw_psx_button_x.dds new file mode 100644 index 0000000000000000000000000000000000000000..dc032dfedcba0bd87a7aa01cafa8f8eb1ebf1b35 GIT binary patch literal 22000 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 I6!LiXe`A%mtpET3 diff --git a/files/data/textures/omw_steam_button_r1.dds b/files/data/textures/omw_steam_button_r1.dds index bdd93de2b2975c69b7d431ad106dcbad015f1b02..8474bb9ff8b0106303ce1a53ba329ee546417f7f 100644 GIT binary patch literal 22000 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 B0Q~>} literal 22000 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 C_0qNg diff --git a/files/data/textures/omw_switch_button_l.dds b/files/data/textures/omw_switch_button_l.dds new file mode 100644 index 0000000000000000000000000000000000000000..ee6ed5cd3f5aa2e3c83119f2b6e89a8180d12203 GIT binary patch literal 22000 zcmeHP4^UG_8sC?YNKiu%qGvOiP}JAS3=lC>lPd?8knw7(S+~ zr^x?C`$~k&DEKTY%zyM&=S6FbH~(89{!4&^{E{#cgCq}0A0&GK2}u6n9`OeV<-$Sv zCY{D#H~0_6*gF&y6liHa!CDS+N_%;?z1)Z~E~-K%YhUZ~80t?G01F$wR8g$sOjm^s z4{;RhF|L@50&uy6N0JAT-=V2xG@pyJPi@;?yN+SZ$B~7{Fds%tBC}`si3baQcr^Y+ zzO{-Q{K_f6&|VR;ypu-TGjgWJiyNO&Q(Ubw@!hi>jPHXwM|H~sDU9!<51Wcx`jQ#n z$LE`hyStS>yg-^;9-t@tNuR3CwKR7(i_3`}u zHD6J_Z(EeF-IrmY^*NVU4XkT;gz?LtNL%(~ zd?MplxccB1Dj8zfBdoC{nXE~)JW}9a;(^_hgsC(z1EJ;N5lnmhh!nZUp#+0@cmhH{S12kj+kMaE&Utj&&}65-uIxh@0yzEqv)wNEGW9yr@41iDIz# zBAuc1C5rQ94x6oNBlGXQ3#;5q`_D3e&Yv3SQzbmi>>cd+jKnvV-tF1zc=Laa@b65Z z*HhLzP^*SSu|A0ZIOMSH-CEDi->Yffy)oUz&i7ac)-P%7VEnuJvZLNpO}M(-@=xR4 zU#WgV1>+-J{*%$x-J4818UKHqoud_XElQ z2hRT_`={13G5mWd|0&tOWd8{e0>WC2B@t@=FWJ9j|Ni5DY5X^_^+EFgqx=6~mD-D7 zeFBRQRlkhPVd0A>EBXFPp8D5N_v5>rFY!M*|H1QtaB=I2&nvxp2~ybSSQ2>x9o zP8&0yxd@CKT^T>zK6sfwNve;?c+kCO|99KJMtXY^|DtW;Z*nJy@ObT=)~9g!*9FCY zdrO1k{}B9-;P~&Imfu9L57vLU^8M!jq1J!I8Q|fceHB~((X$vH{#{PUqxK_QNXX?H zHA^Ul^+xdg_l&fDD?$cObU%8zit68&z+2W&lV&th2o_3WJaG(XM&i@$bev-Ll6 z{ZR2i`wCd^C;H37(+1b({idEhA9rtx?@$dU)YE+aG)gq}y}|PNuK_3RX8OSQN_br5 z5iD=ahwhn7%8z@KMS1AiQ;hG!(+X2P2lH6IT)+FduI;Iee^~!jmIYH{T0VnIud_KC z`Y7I`Zn(6r)yC#Kt+S>XE9^Fwe>?*nDYrK;{*Nz^@VLq&NZzfpEPt;1dK1lj7@$Es>V)!0mzvsQ0FYbpbhxrlN@2cQpVQ{3}2m2{7=8${_ zjyHF}{U2j=1J_0j*1~??mEs3Y~Q2jvpUa2o9X>(8-o3i>$m(I_s1magtQ6;*C%r{*wTN^`YZen_BZ+MUmN1hR$Lc8h)qOze6b()gFIjT{VVi( z-CSdd?^0qr-}b(?~CZ? z|K9HXvL<5pdxR^GejWxt)kADOteo8cefwFrp{lxFB;HNzjq~W`ZKm0~FH(Q(%?o^< z;mwb59CW=NJxYG9^go%jKikm1vQkJqnDp1kDGjAGKByos^m(V&OWx0b^9u^(GfXmZ zKjp;4TBNz2;@2P9BnW-7y2vBcZnXbFHVK$hvnk@55%L6C-X&^^N{&3iknU_ zjF0~}%&BqthGVq+pYZ#k95%2|Jpba5pln{fB;FTK5jHsHnBeND{#pjf%>zRy0q;u; zfvbb^1)1x>JQPb7h~e^rY@T-VduwI1K94Z^{$|qX`z_u%MB;39R4(CvK&6sbc#-qU{T5AVh0z>Fr+s zSlbuSQ~S?j-k|@v@K<@=@RvjI$}o&c=qki`A-H`(mafAb*x0+&Z|^%!w* zeS!>>Z;$VJET{gwnEE3Q{88L=x*i!iHx8In&s;;>GeZ3y93R>`b264+0SJ)Cn7n@r zFkHedu`YHWIUnv*w)Ih z=Y`H!*7)8(CrptW%x88%d=ELo3D3#mgdp`QfA0IpO0I6ThfB!>#7S>l0{}*eh B@qPdR literal 0 HcmV?d00001 diff --git a/files/data/textures/omw_switch_button_r.dds b/files/data/textures/omw_switch_button_r.dds new file mode 100644 index 0000000000000000000000000000000000000000..f2d5060ca15c39b2f9b025beab69a4a59469abdc GIT binary patch literal 22000 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 literal 0 HcmV?d00001 diff --git a/files/data/textures/omw_switch_button_zl.dds b/files/data/textures/omw_switch_button_zl.dds new file mode 100644 index 0000000000000000000000000000000000000000..c23c54afcc5f073956359604b524d9a957a51e5f GIT binary patch literal 22000 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 IUnT$l1KC_E00000 literal 0 HcmV?d00001 diff --git a/files/data/textures/omw_xbox_button_lb.dds b/files/data/textures/omw_xbox_button_lb.dds new file mode 100644 index 0000000000000000000000000000000000000000..ae73e5014a104929f44e53f1472a953b27ae8221 GIT binary patch literal 22000 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 literal 0 HcmV?d00001 diff --git a/files/data/textures/omw_xbox_button_rb.dds b/files/data/textures/omw_xbox_button_rb.dds new file mode 100644 index 0000000000000000000000000000000000000000..335ece93a6e6f6e6c9850b427f2f447f15f3ca1e GIT binary patch literal 22000 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 T=_}TT)Pfl~|9R_A81eZ3{a_6< literal 0 HcmV?d00001 diff --git a/files/data/textures/omw_xbox_button_rt.dds b/files/data/textures/omw_xbox_button_rt.dds new file mode 100644 index 0000000000000000000000000000000000000000..fe7987310cf6e39b20e7bed3d08ee2af8cbe2986 GIT binary patch literal 22000 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 UqEL!A<)ac(GQ}J6gnAhMKL~