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