mirror of
https://github.com/k4zmu2a/SpaceCadetPinball.git
synced 2025-09-06 08:20:15 +02: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
3 changed files with 75 additions and 5 deletions
|
@ -8,7 +8,11 @@ int* Sound::TimeStamps = nullptr;
|
|||
|
||||
bool Sound::Init(int channels, bool enableFlag)
|
||||
{
|
||||
#if SDL_MIXER_VERSION_ATLEAST(2, 0, 3)
|
||||
Mix_Init(MIX_INIT_MID);
|
||||
#else
|
||||
Mix_Init(MIX_INIT_FLUIDSYNTH);
|
||||
#endif
|
||||
auto result = Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 1024);
|
||||
SetChannels(channels);
|
||||
Enable(enableFlag);
|
||||
|
|
|
@ -741,6 +741,69 @@ int winmain::event_handler(const SDL_Event* event)
|
|||
default: ;
|
||||
}
|
||||
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: ;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue