first pass on converting int into JoyAxis/JoyDir

This commit is contained in:
Thomas Jentzsch 2019-08-15 10:58:11 +02:00
parent 55d3c9106f
commit 80a5c5c6bf
16 changed files with 32 additions and 29 deletions

View File

@ -666,7 +666,7 @@ void PhysicalJoystickHandler::handleAxisEvent(int stick, int axis, int value)
if (value != j->axisLastValue[axis]) if (value != j->axisLastValue[axis])
{ {
#ifdef GUI_SUPPORT #ifdef GUI_SUPPORT
myHandler.overlay().handleJoyAxisEvent(stick, axis, value, button); myHandler.overlay().handleJoyAxisEvent(stick, JoyAxis(axis), value, button);
#endif #endif
j->axisLastValue[axis] = value; j->axisLastValue[axis] = value;
} }

View File

@ -90,9 +90,9 @@ class PhysicalJoystickHandler
void handleBtnEvent(int stick, int button, bool pressed); void handleBtnEvent(int stick, int button, bool pressed);
void handleHatEvent(int stick, int hat, int value); void handleHatEvent(int stick, int hat, int value);
Event::Type eventForAxis(EventMode mode, int stick, int axis, int value, int button) const { Event::Type eventForAxis(EventMode mode, int stick, JoyAxis axis, int value, int button) const {
const PhysicalJoystickPtr j = joy(stick); const PhysicalJoystickPtr j = joy(stick);
return j->joyMap.get(mode, button, JoyAxis(axis), convertAxisValue(value)); return j->joyMap.get(mode, button, axis, convertAxisValue(value));
} }
Event::Type eventForButton(EventMode mode, int stick, int button) const { Event::Type eventForButton(EventMode mode, int stick, int button) const {
const PhysicalJoystickPtr j = joy(stick); const PhysicalJoystickPtr j = joy(stick);

View File

@ -162,7 +162,7 @@ class EventHandler
Event::Type eventForKey(EventMode mode, StellaKey key, StellaMod mod) const { Event::Type eventForKey(EventMode mode, StellaKey key, StellaMod mod) const {
return myPKeyHandler->eventForKey(mode, key, mod); return myPKeyHandler->eventForKey(mode, key, mod);
} }
Event::Type eventForJoyAxis(EventMode mode, int stick, int axis, int value, int button) const { Event::Type eventForJoyAxis(EventMode mode, int stick, JoyAxis axis, int value, int button) const {
return myPJoyHandler->eventForAxis(mode, stick, axis, value, button); return myPJoyHandler->eventForAxis(mode, stick, axis, value, button);
} }
Event::Type eventForJoyButton(EventMode mode, int stick, int button) const { Event::Type eventForJoyButton(EventMode mode, int stick, int button) const {

View File

@ -292,9 +292,9 @@ void ContextMenu::handleJoyDown(int stick, int button, bool longPress)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ContextMenu::handleJoyAxis(int stick, int axis, int value, int button) void ContextMenu::handleJoyAxis(int stick, JoyAxis axis, int value, int button)
{ {
if(value != 0) // we don't care about 'axis up' events if(value != int(JoyDir::NONE)) // we don't care about 'axis off' events
handleEvent(instance().eventHandler().eventForJoyAxis(EventMode::kMenuMode, stick, axis, value, button)); handleEvent(instance().eventHandler().eventForJoyAxis(EventMode::kMenuMode, stick, axis, value, button));
} }

View File

@ -88,7 +88,7 @@ class ContextMenu : public Dialog, public CommandSender
void handleMouseWheel(int x, int y, int direction) override; void handleMouseWheel(int x, int y, int direction) override;
void handleKeyDown(StellaKey key, StellaMod mod, bool repeated) override; void handleKeyDown(StellaKey key, StellaMod mod, bool repeated) override;
void handleJoyDown(int stick, int button, bool longPress) override; void handleJoyDown(int stick, int button, bool longPress) override;
void handleJoyAxis(int stick, int axis, int value, int button) override; void handleJoyAxis(int stick, JoyAxis axis, int value, int button) override;
bool handleJoyHat(int stick, int hat, JoyHat value, int button) override; bool handleJoyHat(int stick, int hat, JoyHat value, int button) override;
void handleEvent(Event::Type e); void handleEvent(Event::Type e);

View File

@ -613,13 +613,13 @@ void Dialog::handleJoyUp(int stick, int button)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Event::Type Dialog::getJoyAxisEvent(int stick, int axis, int value, int button) Event::Type Dialog::getJoyAxisEvent(int stick, JoyAxis axis, int value, int button)
{ {
return instance().eventHandler().eventForJoyAxis(EventMode::kMenuMode, stick, axis, value, button); return instance().eventHandler().eventForJoyAxis(EventMode::kMenuMode, stick, axis, value, button);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Dialog::handleJoyAxis(int stick, int axis, int value, int button) void Dialog::handleJoyAxis(int stick, JoyAxis axis, int value, int button)
{ {
Event::Type e = getJoyAxisEvent(stick, axis, value, button); Event::Type e = getJoyAxisEvent(stick, axis, value, button);
@ -629,7 +629,7 @@ void Dialog::handleJoyAxis(int stick, int axis, int value, int button)
{ {
if(_focusedWidget->wantsRaw() || e == Event::NoType) if(_focusedWidget->wantsRaw() || e == Event::NoType)
_focusedWidget->handleJoyAxis(stick, axis, value, button); _focusedWidget->handleJoyAxis(stick, axis, value, button);
else if(value != 0) else if(value != int(JoyDir::NONE))
_focusedWidget->handleEvent(e); _focusedWidget->handleEvent(e);
} }
} }

View File

@ -139,10 +139,10 @@ class Dialog : public GuiObject
virtual bool handleMouseClicks(int x, int y, MouseButton b); virtual bool handleMouseClicks(int x, int y, MouseButton b);
virtual void handleJoyDown(int stick, int button, bool longPress = false); virtual void handleJoyDown(int stick, int button, bool longPress = false);
virtual void handleJoyUp(int stick, int button); virtual void handleJoyUp(int stick, int button);
virtual void handleJoyAxis(int stick, int axis, int value, int button = JOY_CTRL_NONE); virtual void handleJoyAxis(int stick, JoyAxis axis, int value, int button = JOY_CTRL_NONE);
virtual bool handleJoyHat(int stick, int hat, JoyHat value, int button = JOY_CTRL_NONE); virtual bool handleJoyHat(int stick, int hat, JoyHat value, int button = JOY_CTRL_NONE);
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id) override; virtual void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
virtual Event::Type getJoyAxisEvent(int stick, int axis, int value, int button); virtual Event::Type getJoyAxisEvent(int stick, JoyAxis axis, int value, int button);
Widget* findWidget(int x, int y) const; // Find the widget at pos x,y if any Widget* findWidget(int x, int y) const; // Find the widget at pos x,y if any

View File

@ -313,7 +313,7 @@ void DialogContainer::handleJoyBtnEvent(int stick, int button, bool pressed)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DialogContainer::handleJoyAxisEvent(int stick, int axis, int value, int button) void DialogContainer::handleJoyAxisEvent(int stick, JoyAxis axis, int value, int button)
{ {
if(myDialogStack.empty()) if(myDialogStack.empty())
return; return;
@ -327,7 +327,8 @@ void DialogContainer::handleJoyAxisEvent(int stick, int axis, int value, int but
// Only stop firing events if it's the current stick // Only stop firing events if it's the current stick
if(myCurrentAxisDown.stick == stick && value == 0) if(myCurrentAxisDown.stick == stick && value == 0)
{ {
myCurrentAxisDown.stick = myCurrentAxisDown.axis = -1; myCurrentAxisDown.stick = -1;
myCurrentAxisDown.axis = JoyAxis::NONE;
myAxisRepeatTime = 0; myAxisRepeatTime = 0;
} }
else if(value != 0 && myAxisRepeatTime < myTime) // never repeat the 'off' event; prevent pending repeats after enabling repeat again else if(value != 0 && myAxisRepeatTime < myTime) // never repeat the 'off' event; prevent pending repeats after enabling repeat again
@ -379,7 +380,8 @@ void DialogContainer::reset()
myLastClick.count = 0; myLastClick.count = 0;
myCurrentButtonDown.stick = myCurrentButtonDown.button = -1; myCurrentButtonDown.stick = myCurrentButtonDown.button = -1;
myCurrentAxisDown.stick = myCurrentAxisDown.axis = -1; myCurrentAxisDown.stick = -1;
myCurrentAxisDown.axis = JoyAxis::NONE;
myCurrentHatDown.stick = myCurrentHatDown.hat = -1; myCurrentHatDown.stick = myCurrentHatDown.hat = -1;
} }

View File

@ -108,7 +108,7 @@ class DialogContainer
@param axis The joystick axis @param axis The joystick axis
@param value Value associated with given axis @param value Value associated with given axis
*/ */
void handleJoyAxisEvent(int stick, int axis, int value, int button); void handleJoyAxisEvent(int stick, JoyAxis axis, int value, int button);
/** /**
Handle a joystick hat event. Handle a joystick hat event.
@ -208,7 +208,7 @@ class DialogContainer
// For continuous 'joy axis down' events // For continuous 'joy axis down' events
struct { struct {
int stick; int stick;
int axis; JoyAxis axis;
int value; int value;
} myCurrentAxisDown; } myCurrentAxisDown;
uInt64 myAxisRepeatTime; uInt64 myAxisRepeatTime;

View File

@ -44,7 +44,7 @@ EventMappingWidget::EventMappingWidget(GuiObject* boss, const GUI::Font& font,
myActionSelected(-1), myActionSelected(-1),
myRemapStatus(false), myRemapStatus(false),
myLastStick(0), myLastStick(0),
myLastAxis(0), myLastAxis(JoyAxis::NONE),
myLastHat(0), myLastHat(0),
myLastValue(0), myLastValue(0),
myLastButton(JOY_CTRL_NONE), myLastButton(JOY_CTRL_NONE),
@ -165,7 +165,7 @@ void EventMappingWidget::startRemapping()
// Reset all previous events for determining correct axis/hat values // Reset all previous events for determining correct axis/hat values
myLastStick = -1; myLastStick = -1;
myLastButton = JOY_CTRL_NONE; myLastButton = JOY_CTRL_NONE;
myLastAxis = int(JoyAxis::NONE); myLastAxis = JoyAxis::NONE;
myLastHat = -1; myLastHat = -1;
myLastValue = int(JoyDir::NONE); myLastValue = int(JoyDir::NONE);
@ -223,7 +223,7 @@ void EventMappingWidget::stopRemapping()
// Reset all previous events for determining correct axis/hat values // Reset all previous events for determining correct axis/hat values
myLastStick = -1; myLastStick = -1;
myLastButton = JOY_CTRL_NONE; myLastButton = JOY_CTRL_NONE;
myLastAxis = int(JoyAxis::NONE); myLastAxis = JoyAxis::NONE;
myLastHat = -1; myLastHat = -1;
myLastValue = int(JoyDir::NONE); myLastValue = int(JoyDir::NONE);
@ -345,7 +345,7 @@ void EventMappingWidget::handleJoyUp(int stick, int button)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void EventMappingWidget::handleJoyAxis(int stick, int axis, int value, int button) void EventMappingWidget::handleJoyAxis(int stick, JoyAxis axis, int value, int button)
{ {
// Remap joystick axes in remap mode // Remap joystick axes in remap mode
// There are two phases to detection: // There are two phases to detection:
@ -354,7 +354,7 @@ void EventMappingWidget::handleJoyAxis(int stick, int axis, int value, int butto
if(myRemapStatus && myActionSelected >= 0) if(myRemapStatus && myActionSelected >= 0)
{ {
// Detect the first axis event that represents 'on' // Detect the first axis event that represents 'on'
if((myLastStick == -1 || myLastStick == stick) && myLastAxis == -1 && value != 0) if((myLastStick == -1 || myLastStick == stick) && myLastAxis == JoyAxis::NONE && value != 0)
{ {
myLastStick = stick; myLastStick = stick;
myLastAxis = axis; myLastAxis = axis;

View File

@ -60,7 +60,7 @@ class EventMappingWidget : public Widget, public CommandSender
bool handleKeyUp(StellaKey key, StellaMod mod) override; bool handleKeyUp(StellaKey key, StellaMod mod) override;
void handleJoyDown(int stick, int button, bool longPress = false) override; void handleJoyDown(int stick, int button, bool longPress = false) override;
void handleJoyUp(int stick, int button) override; void handleJoyUp(int stick, int button) override;
void handleJoyAxis(int stick, int axis, int value, int button) override; void handleJoyAxis(int stick, JoyAxis axis, int value, int button) override;
bool handleJoyHat(int stick, int hat, JoyHat value, int button) override; bool handleJoyHat(int stick, int hat, JoyHat value, int button) override;
void loadConfig() override; void loadConfig() override;
@ -105,7 +105,8 @@ class EventMappingWidget : public Widget, public CommandSender
// Therefore, we map these events when they've been 'released', rather // Therefore, we map these events when they've been 'released', rather
// than on their first occurrence (aka, when they're 'pressed') // than on their first occurrence (aka, when they're 'pressed')
// As a result, we need to keep track of their old values // As a result, we need to keep track of their old values
int myLastStick, myLastAxis, myLastHat, myLastValue; int myLastStick, myLastHat, myLastValue;
JoyAxis myLastAxis;
// Aggregates the modifier flags of the mapping // Aggregates the modifier flags of the mapping
int myMod; int myMod;

View File

@ -499,7 +499,7 @@ void InputDialog::handleJoyUp(int stick, int button)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void InputDialog::handleJoyAxis(int stick, int axis, int value, int button) void InputDialog::handleJoyAxis(int stick, JoyAxis axis, int value, int button)
{ {
// Remap joystick axis in remap mode, otherwise pass to parent dialog // Remap joystick axis in remap mode, otherwise pass to parent dialog
if(myEmulEventMapper->remapMode()) if(myEmulEventMapper->remapMode())

View File

@ -51,7 +51,7 @@ class InputDialog : public Dialog
void handleKeyUp(StellaKey key, StellaMod mod) override; void handleKeyUp(StellaKey key, StellaMod mod) override;
void handleJoyDown(int stick, int button, bool longPress) override; void handleJoyDown(int stick, int button, bool longPress) override;
void handleJoyUp(int stick, int button) override; void handleJoyUp(int stick, int button) override;
void handleJoyAxis(int stick, int axis, int value, int button) override; void handleJoyAxis(int stick, JoyAxis axis, int value, int button) override;
bool handleJoyHat(int stick, int hat, JoyHat value, int button) override; bool handleJoyHat(int stick, int hat, JoyHat value, int button) override;
void handleCommand(CommandSender* sender, int cmd, int data, int id) override; void handleCommand(CommandSender* sender, int cmd, int data, int id) override;

View File

@ -493,7 +493,7 @@ void LauncherDialog::handleJoyUp(int stick, int button)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Event::Type LauncherDialog::getJoyAxisEvent(int stick, int axis, int value, int button) Event::Type LauncherDialog::getJoyAxisEvent(int stick, JoyAxis axis, int value, int button)
{ {
Event::Type e = instance().eventHandler().eventForJoyAxis(EventMode::kMenuMode, stick, axis, value, button); Event::Type e = instance().eventHandler().eventForJoyAxis(EventMode::kMenuMode, stick, axis, value, button);

View File

@ -93,7 +93,7 @@ class LauncherDialog : public Dialog
void handleCommand(CommandSender* sender, int cmd, int data, int id) override; void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
void handleJoyDown(int stick, int button, bool longPress) override; void handleJoyDown(int stick, int button, bool longPress) override;
void handleJoyUp(int stick, int button) override; void handleJoyUp(int stick, int button) override;
Event::Type getJoyAxisEvent(int stick, int axis, int value, int button) override; Event::Type getJoyAxisEvent(int stick, JoyAxis axis, int value, int button) override;
void loadConfig() override; void loadConfig() override;
void updateUI(); void updateUI();

View File

@ -79,7 +79,7 @@ class Widget : public GuiObject
virtual bool handleMouseClicks(int x, int y, MouseButton b) { return false; } virtual bool handleMouseClicks(int x, int y, MouseButton b) { return false; }
virtual void handleJoyDown(int stick, int button, bool longPress = false) { } virtual void handleJoyDown(int stick, int button, bool longPress = false) { }
virtual void handleJoyUp(int stick, int button) { } virtual void handleJoyUp(int stick, int button) { }
virtual void handleJoyAxis(int stick, int axis, int value, int button = JOY_CTRL_NONE) { } virtual void handleJoyAxis(int stick, JoyAxis axis, int value, int button = JOY_CTRL_NONE) { }
virtual bool handleJoyHat(int stick, int hat, JoyHat value, int button = JOY_CTRL_NONE) { return false; } virtual bool handleJoyHat(int stick, int hat, JoyHat value, int button = JOY_CTRL_NONE) { return false; }
virtual bool handleEvent(Event::Type event) { return false; } virtual bool handleEvent(Event::Type event) { return false; }