80 lines
1.5 KiB
C++
80 lines
1.5 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
|