63 lines
1.0 KiB
C++
63 lines
1.0 KiB
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;
|
|
uint8_t previous;
|
|
bool going_left;
|
|
float progress;
|
|
};
|
|
|
|
constexpr size_t MAX_MENU_SIZE = sizeof(ManaMenu);
|
|
|
|
}
|
|
|
|
#endif // MENU_H
|