75 lines
1.8 KiB
C++
75 lines
1.8 KiB
C++
/**
|
|
* @file controlPadInput.h
|
|
* @author Alexander Klein (alex@kleiax.de)
|
|
* @brief
|
|
* @version 0.1
|
|
* @date 2023-03-30
|
|
*
|
|
* @copyright Copyright (c) 2023
|
|
*
|
|
*/
|
|
|
|
#ifndef CONTROL_PAD_INPUT_H
|
|
#define CONTROL_PAD_INPUT_H
|
|
|
|
#include <stdint.h>
|
|
|
|
struct ControlPadInput {
|
|
uint8_t buttons;
|
|
uint8_t x;
|
|
uint8_t y;
|
|
uint8_t counter;
|
|
};
|
|
|
|
|
|
class ControlPadButton {
|
|
public:
|
|
enum PadButton {
|
|
Left = 4,
|
|
Right = 8,
|
|
Up = 2,
|
|
Down = 1,
|
|
Yes = 32,
|
|
No = 16,
|
|
Action = 64
|
|
};
|
|
|
|
static bool isControlPadButtonPressed(const ControlPadInput *input, PadButton button) {
|
|
uint8_t buttonNum = input->buttons;
|
|
switch (button) {
|
|
case PadButton::Left :
|
|
return buttonNum & (uint8_t) PadButton::Left;
|
|
break;
|
|
|
|
case PadButton::Right :
|
|
return buttonNum & (uint8_t) PadButton::Right;
|
|
break;
|
|
|
|
case PadButton::Up :
|
|
return buttonNum & (uint8_t) PadButton::Up;
|
|
break;
|
|
|
|
case PadButton::Down :
|
|
return buttonNum & (uint8_t) PadButton::Down;
|
|
break;
|
|
|
|
case PadButton::Yes :
|
|
return buttonNum & (uint8_t) PadButton::Yes;
|
|
break;
|
|
|
|
case PadButton::No :
|
|
return buttonNum & (uint8_t) PadButton::No;
|
|
break;
|
|
|
|
case PadButton::Action :
|
|
return buttonNum & (uint8_t) PadButton::Action;
|
|
break;
|
|
|
|
default:
|
|
return false;;
|
|
}
|
|
}
|
|
};
|
|
|
|
#endif // CONTROL_PAD_INPUT_H
|