-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmenu.h
More file actions
44 lines (35 loc) · 1.3 KB
/
menu.h
File metadata and controls
44 lines (35 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#ifndef __MENU
#define __MENU
#include "display.h"
#include "controller.h"
class MenuOption {
public:
MenuOption(const char *graphic, void (*setPaletteFunction)(Display& disp),
bool (*runFunction)(Display& disp, Controller *controllers, uint8_t controller_count)):
graphic(graphic), setPaletteFunction(setPaletteFunction), runFunction(runFunction) {}
void setPalette(Display& disp);
void draw(Display& disp, int8_t origin_x, int8_t origin_y, int8_t override_color);
// Returns whether it should be run again.
bool run(Display& disp, Controller *controllers, uint8_t controller_count);
private:
void (*setPaletteFunction)(Display& disp);
bool (*runFunction)(Display& disp, Controller *controllers, uint8_t controller_count);
// 10x10 graphic stored in PROGMEM.
const char *graphic;
};
class Menu {
public:
Display& disp;
Controller *controllers;
uint8_t controller_count;
MenuOption *options;
uint8_t option_count;
Menu(Display& disp, Controller *controllers, uint8_t controller_count, MenuOption *options, uint8_t option_count):
disp(disp), controllers(controllers), controller_count(controller_count),
options(options), option_count(option_count), option_index(0) {}
uint8_t choose(uint8_t initial_option = 0);
void run();
private:
int option_index;
};
#endif