/** * @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 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