mirror of
https://github.com/k4zmu2a/SpaceCadetPinball.git
synced 2023-12-30 21:52:56 +00:00
Compatibility and game controller patches (#42)
* Compatibility for old CMake versions (3.0) Compatibility for SDL Mixer 2.0.1 Basic controller support: LB, RB for flippers, A for plunger, DPAD for table bump * Update SpaceCadetPinball/Sound.cpp Co-authored-by: Muzychenko Andrey <33288308+k4zmu2a@users.noreply.github.com>
This commit is contained in:
parent
a7e3503e2c
commit
f56abf0596
@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.0)
|
||||||
project(SpaceCadetPinball)
|
project(SpaceCadetPinball)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
@ -191,10 +191,13 @@ set_source_files_properties(
|
|||||||
SpaceCadetPinball/imgui_impl_sdl.cpp
|
SpaceCadetPinball/imgui_impl_sdl.cpp
|
||||||
PROPERTIES SKIP_PRECOMPILE_HEADERS 1
|
PROPERTIES SKIP_PRECOMPILE_HEADERS 1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(${CMAKE_VERSION} VERSION_GREATER "3.16.0" OR ${CMAKE_VERSION} VERSION_EQUAL "3.16.0")
|
||||||
target_precompile_headers(SpaceCadetPinball
|
target_precompile_headers(SpaceCadetPinball
|
||||||
PUBLIC
|
PUBLIC
|
||||||
SpaceCadetPinball/pch.h
|
SpaceCadetPinball/pch.h
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
target_link_libraries(SpaceCadetPinball ${SDL2_LIBRARY} ${SDL2_MIXER_LIBRARY})
|
target_link_libraries(SpaceCadetPinball ${SDL2_LIBRARY} ${SDL2_MIXER_LIBRARY})
|
||||||
|
|
||||||
|
@ -8,7 +8,11 @@ int* Sound::TimeStamps = nullptr;
|
|||||||
|
|
||||||
bool Sound::Init(int channels, bool enableFlag)
|
bool Sound::Init(int channels, bool enableFlag)
|
||||||
{
|
{
|
||||||
|
#if SDL_MIXER_VERSION_ATLEAST(2, 0, 3)
|
||||||
Mix_Init(MIX_INIT_MID);
|
Mix_Init(MIX_INIT_MID);
|
||||||
|
#else
|
||||||
|
Mix_Init(MIX_INIT_FLUIDSYNTH);
|
||||||
|
#endif
|
||||||
auto result = Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 1024);
|
auto result = Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 1024);
|
||||||
SetChannels(channels);
|
SetChannels(channels);
|
||||||
Enable(enableFlag);
|
Enable(enableFlag);
|
||||||
|
@ -741,6 +741,69 @@ int winmain::event_handler(const SDL_Event* event)
|
|||||||
default: ;
|
default: ;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case SDL_JOYDEVICEADDED:
|
||||||
|
if (SDL_IsGameController(event->jdevice.which))
|
||||||
|
{
|
||||||
|
SDL_GameControllerOpen(event->jdevice.which);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SDL_JOYDEVICEREMOVED:
|
||||||
|
{
|
||||||
|
SDL_GameController *controller = SDL_GameControllerFromInstanceID(event->jdevice.which);
|
||||||
|
if (controller)
|
||||||
|
{
|
||||||
|
SDL_GameControllerClose(controller);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLERBUTTONDOWN:
|
||||||
|
switch (event->cbutton.button)
|
||||||
|
{
|
||||||
|
case SDL_CONTROLLER_BUTTON_A:
|
||||||
|
pb::keydown(Options.Key.Plunger);
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLER_BUTTON_LEFTSHOULDER:
|
||||||
|
pb::keydown(Options.Key.LeftFlipper);
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER:
|
||||||
|
pb::keydown(Options.Key.RightFlipper);
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLER_BUTTON_DPAD_LEFT:
|
||||||
|
pb::keydown(Options.Key.LeftTableBump);
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLER_BUTTON_DPAD_RIGHT:
|
||||||
|
pb::keydown(Options.Key.RightTableBump);
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLER_BUTTON_DPAD_DOWN:
|
||||||
|
pb::keydown(Options.Key.BottomTableBump);
|
||||||
|
break;
|
||||||
|
default: ;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLERBUTTONUP:
|
||||||
|
switch (event->cbutton.button)
|
||||||
|
{
|
||||||
|
case SDL_CONTROLLER_BUTTON_A:
|
||||||
|
pb::keyup(Options.Key.Plunger);
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLER_BUTTON_LEFTSHOULDER:
|
||||||
|
pb::keyup(Options.Key.LeftFlipper);
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER:
|
||||||
|
pb::keyup(Options.Key.RightFlipper);
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLER_BUTTON_DPAD_LEFT:
|
||||||
|
pb::keyup(Options.Key.LeftTableBump);
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLER_BUTTON_DPAD_RIGHT:
|
||||||
|
pb::keyup(Options.Key.RightTableBump);
|
||||||
|
break;
|
||||||
|
case SDL_CONTROLLER_BUTTON_DPAD_DOWN:
|
||||||
|
pb::keyup(Options.Key.BottomTableBump);
|
||||||
|
break;
|
||||||
|
default: ;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default: ;
|
default: ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user