diff --git a/CMakeLists.txt b/CMakeLists.txt index 673fa38..eea418b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.25 FATAL_ERROR) +cmake_minimum_required(VERSION 3.24 FATAL_ERROR) project(4JLibs LANGUAGES CXX) @@ -8,6 +8,8 @@ target_include_directories(4JLibs.Globals INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/inc ) +target_link_libraries(4JLibs.Globals INTERFACE SDL3::SDL3) + set(CMAKE_DEBUG_POSTFIX "_d") # msvc specific flags @@ -15,6 +17,15 @@ if(MSVC) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") endif() +include(FetchContent) + +FetchContent_Declare( + SDL3 + GIT_REPOSITORY https://github.com/libsdl-org/SDL.git + GIT_TAG release-3.2.4 +) +FetchContent_MakeAvailable(SDL3) + if(WIN32) add_subdirectory(impls/Windows_Libs) else() diff --git a/impls/Windows_Libs/CMakeLists.txt b/impls/Windows_Libs/CMakeLists.txt index 4c971fb..a5a41d8 100644 --- a/impls/Windows_Libs/CMakeLists.txt +++ b/impls/Windows_Libs/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.25 FATAL_ERROR) +cmake_minimum_required(VERSION 3.24 FATAL_ERROR) project(4JLibs.Windows64 LANGUAGES CXX) diff --git a/impls/Windows_Libs/Input/CMakeLists.txt b/impls/Windows_Libs/Input/CMakeLists.txt index 3f91148..4edfbed 100644 --- a/impls/Windows_Libs/Input/CMakeLists.txt +++ b/impls/Windows_Libs/Input/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.25 FATAL_ERROR) +cmake_minimum_required(VERSION 3.24 FATAL_ERROR) project(4JLibs.Windows64.Input LANGUAGES CXX) @@ -8,6 +8,7 @@ add_library(${PROJECT_NAME} STATIC src/INP_Keyboard.cpp src/INP_Main.cpp src/INP_StringCheck.cpp + src/INP_SDLBridge.cpp src/LinkedList.cpp src/stdafx.cpp ) diff --git a/impls/Windows_Libs/Input/inc/INP_SDLBridge.h b/impls/Windows_Libs/Input/inc/INP_SDLBridge.h new file mode 100644 index 0000000..7c33f88 --- /dev/null +++ b/impls/Windows_Libs/Input/inc/INP_SDLBridge.h @@ -0,0 +1,7 @@ +#pragma once + +#include "stdafx.h" + +namespace SDLBridge +{ +} \ No newline at end of file diff --git a/impls/Windows_Libs/Input/src/4J_Input.cpp b/impls/Windows_Libs/Input/src/4J_Input.cpp index 8fec45d..3c8329d 100644 --- a/impls/Windows_Libs/Input/src/4J_Input.cpp +++ b/impls/Windows_Libs/Input/src/4J_Input.cpp @@ -25,6 +25,7 @@ SOFTWARE. #include "4J_Input.h" #include "INP_Keyboard.h" #include "INP_Main.h" +#include "INP_SDLBridge.h" C_4JInput InputManager; CKeyboard InternalKeyboard; diff --git a/impls/Windows_Libs/Input/src/INP_Main.cpp b/impls/Windows_Libs/Input/src/INP_Main.cpp index 9953243..c76bf26 100644 --- a/impls/Windows_Libs/Input/src/INP_Main.cpp +++ b/impls/Windows_Libs/Input/src/INP_Main.cpp @@ -32,7 +32,7 @@ CInput::CInput() m_Keyboard = CKeyboard(); m_uiSigninJoypadMask = 0; - for (int i = 0; i < 4; ++i) + for (int i = 0; i < MAX_JOYPADS; ++i) m_bIsMenuDisplayed[i] = 0; InitTime(); diff --git a/impls/Windows_Libs/Input/src/INP_SDLBridge.cpp b/impls/Windows_Libs/Input/src/INP_SDLBridge.cpp new file mode 100644 index 0000000..34978b7 --- /dev/null +++ b/impls/Windows_Libs/Input/src/INP_SDLBridge.cpp @@ -0,0 +1,34 @@ +#include "INP_SdlBridge.h" +#include "INP_Main.h" + +#include + +#include +#include + +namespace +{ + SDL_Gamepad* g_pads[MAX_JOYPADS] = {}; + bool g_initialised = false; + + WORD g_lastButtons[MAX_JOYPADS] = {}; + + const char* gamepadTypeName(SDL_GamepadType Type) + { + switch (Type) + { + case SDL_GAMEPAD_TYPE_UNKNOWN: return "UNKNOWN"; + case SDL_GAMEPAD_TYPE_STANDARD: return "STANDARD"; + case SDL_GAMEPAD_TYPE_XBOX360: return "XBOX360"; + case SDL_GAMEPAD_TYPE_XBOXONE: return "XBOXONE"; + case SDL_GAMEPAD_TYPE_PS3: return "PS3"; + case SDL_GAMEPAD_TYPE_PS4: return "PS4"; + case SDL_GAMEPAD_TYPE_PS5: return "PS5"; + case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_PRO: return "SWITCH_PRO"; + case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR: return "JOYCON_PAIR"; + case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_LEFT: return "JOYCON_L"; + case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT: return "JOYCON_R"; + default: return "UNKNOWN"; + } + } +} \ No newline at end of file diff --git a/impls/Windows_Libs/Profile/CMakeLists.txt b/impls/Windows_Libs/Profile/CMakeLists.txt index 3e16589..269add0 100644 --- a/impls/Windows_Libs/Profile/CMakeLists.txt +++ b/impls/Windows_Libs/Profile/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.25 FATAL_ERROR) +cmake_minimum_required(VERSION 3.24 FATAL_ERROR) project(4JLibs.Windows64.Profile LANGUAGES CXX) diff --git a/impls/Windows_Libs/Render/CMakeLists.txt b/impls/Windows_Libs/Render/CMakeLists.txt index b4b9798..d940971 100644 --- a/impls/Windows_Libs/Render/CMakeLists.txt +++ b/impls/Windows_Libs/Render/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.25 FATAL_ERROR) +cmake_minimum_required(VERSION 3.24 FATAL_ERROR) project(4JLibs.Windows64.Render LANGUAGES C CXX) diff --git a/impls/Windows_Libs/Storage/CMakeLists.txt b/impls/Windows_Libs/Storage/CMakeLists.txt index 21a97b6..85b0dab 100644 --- a/impls/Windows_Libs/Storage/CMakeLists.txt +++ b/impls/Windows_Libs/Storage/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.25 FATAL_ERROR) +cmake_minimum_required(VERSION 3.24 FATAL_ERROR) project(4JLibs.Windows64.Storage LANGUAGES C CXX)