2026-01-11 08:07:13 -05:00

62 lines
1022 B
C++

#ifndef MENU_H
#define MENU_H
#include "display.h"
#include <pico/stdlib.h>
class Menu
{
public:
static constexpr int HOLD_MS_THRESHOLD = 250;
explicit Menu(lib::Display& display);
virtual ~Menu() = default;
virtual void onTick(float dt) = 0;
virtual void onLeftPressed() = 0;
virtual void onLeftHeld() = 0;
virtual void onMenuPressed() = 0;
virtual void onMenuHeld() = 0;
virtual void onRightPressed() = 0;
virtual void onRightHeld() = 0;
protected:
lib::Display* const display;
};
namespace menus
{
class ManaMenu : public Menu
{
public:
explicit ManaMenu(lib::Display& display);
~ManaMenu() override = default;
void onTick(float dt) override;
void onLeftPressed() override;
void onLeftHeld() override;
void onMenuPressed() override;
void onMenuHeld() override;
void onRightPressed() override;
void onRightHeld() override;
private:
uint8_t current;
bool going_left;
float progress;
};
constexpr size_t MAX_MENU_SIZE = sizeof(ManaMenu);
}
#endif // MENU_H