Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed FATFileSystem
Menu/Menu.h@16:c8d68cbd1ae2, 2019-05-09 (annotated)
- Committer:
- ellisbhastroud
- Date:
- Thu May 09 09:58:51 2019 +0000
- Revision:
- 16:c8d68cbd1ae2
- Parent:
- 14:08ac9aaa34c3
Penultimate Commit - Tidied a little and checking documentation.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| ellisbhastroud | 1:6179c2d67d19 | 1 | #ifndef MENU_H |
| ellisbhastroud | 1:6179c2d67d19 | 2 | #define MENU_H |
| ellisbhastroud | 1:6179c2d67d19 | 3 | |
| ellisbhastroud | 1:6179c2d67d19 | 4 | #include "mbed.h" |
| ellisbhastroud | 1:6179c2d67d19 | 5 | #include "N5110.h" |
| ellisbhastroud | 1:6179c2d67d19 | 6 | #include "Gamepad.h" |
| ellisbhastroud | 13:681192091568 | 7 | #include "SDFileSystem.h" |
| ellisbhastroud | 13:681192091568 | 8 | #include <algorithm> |
| ellisbhastroud | 1:6179c2d67d19 | 9 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 10 | /** Enum for wall types */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 11 | enum MenuChoice { |
| ellisbhastroud | 14:08ac9aaa34c3 | 12 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 13 | START, /**< start screen */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 14 | HIGHSCORES, /**< highscores screen */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 15 | SETTINGS, /**< settings screen */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 16 | }; |
| ellisbhastroud | 14:08ac9aaa34c3 | 17 | |
| ellisbhastroud | 1:6179c2d67d19 | 18 | /** Menu Class |
| ellisbhastroud | 3:a8960004d261 | 19 | * @brief Library for navigating menu options |
| ellisbhastroud | 1:6179c2d67d19 | 20 | * @author Ellis Blackford Stroud |
| ellisbhastroud | 1:6179c2d67d19 | 21 | * @date May, 2018 |
| ellisbhastroud | 1:6179c2d67d19 | 22 | */ |
| ellisbhastroud | 16:c8d68cbd1ae2 | 23 | class Menu |
| ellisbhastroud | 16:c8d68cbd1ae2 | 24 | { |
| ellisbhastroud | 1:6179c2d67d19 | 25 | public: |
| ellisbhastroud | 1:6179c2d67d19 | 26 | /** Constructor */ |
| ellisbhastroud | 1:6179c2d67d19 | 27 | Menu(); |
| ellisbhastroud | 1:6179c2d67d19 | 28 | |
| ellisbhastroud | 1:6179c2d67d19 | 29 | /** Destructor */ |
| ellisbhastroud | 1:6179c2d67d19 | 30 | ~Menu(); |
| ellisbhastroud | 12:7f7fadb5c106 | 31 | |
| ellisbhastroud | 12:7f7fadb5c106 | 32 | /** Sets class variables initial values */ |
| ellisbhastroud | 3:a8960004d261 | 33 | void init(); |
| ellisbhastroud | 12:7f7fadb5c106 | 34 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 35 | /**Enters welcome screen loop */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 36 | void welcome_loop(Gamepad &pad, N5110 &lcd); |
| ellisbhastroud | 14:08ac9aaa34c3 | 37 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 38 | /** Enters menu screen loop */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 39 | void menu_loop(Gamepad &pad, N5110 &lcd); |
| ellisbhastroud | 14:08ac9aaa34c3 | 40 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 41 | /** Enters start screen loop */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 42 | void start_loop(Gamepad &pad, N5110 &lcd); |
| ellisbhastroud | 1:6179c2d67d19 | 43 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 44 | /** Enters highscores screen loop */ |
| ellisbhastroud | 13:681192091568 | 45 | void highscores_loop(Gamepad &pad, N5110 &lcd, SDFileSystem &sd); |
| ellisbhastroud | 14:08ac9aaa34c3 | 46 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 47 | /** Enters settings screen loop */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 48 | void settings_loop(Gamepad &pad, N5110 &lcd); |
| ellisbhastroud | 14:08ac9aaa34c3 | 49 | |
| ellisbhastroud | 12:7f7fadb5c106 | 50 | /** Returns frame rate |
| ellisbhastroud | 14:08ac9aaa34c3 | 51 | * @returns the current frame rate |
| ellisbhastroud | 12:7f7fadb5c106 | 52 | */ |
| ellisbhastroud | 4:035448357749 | 53 | int get_frame_rate(); |
| ellisbhastroud | 4:035448357749 | 54 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 55 | /** Returns brightness |
| ellisbhastroud | 14:08ac9aaa34c3 | 56 | * @returns the current brightness |
| ellisbhastroud | 14:08ac9aaa34c3 | 57 | */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 58 | float get_brightness(); |
| ellisbhastroud | 14:08ac9aaa34c3 | 59 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 60 | /** Returns start game flag state |
| ellisbhastroud | 14:08ac9aaa34c3 | 61 | * @returns the start game flag state |
| ellisbhastroud | 14:08ac9aaa34c3 | 62 | */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 63 | bool get_start_game_flag(); |
| ellisbhastroud | 14:08ac9aaa34c3 | 64 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 65 | /** Resets start game flag */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 66 | void reset_start_game_flag(); |
| ellisbhastroud | 14:08ac9aaa34c3 | 67 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 68 | /** Returns the current menu screen |
| ellisbhastroud | 14:08ac9aaa34c3 | 69 | * @returns the current menu screen |
| ellisbhastroud | 14:08ac9aaa34c3 | 70 | */ |
| ellisbhastroud | 14:08ac9aaa34c3 | 71 | MenuChoice get_screen(); |
| ellisbhastroud | 14:08ac9aaa34c3 | 72 | |
| ellisbhastroud | 12:7f7fadb5c106 | 73 | private: |
| ellisbhastroud | 2:81cfa8310f55 | 74 | |
| ellisbhastroud | 13:681192091568 | 75 | void read_input(Gamepad &pad); |
| ellisbhastroud | 13:681192091568 | 76 | void sd_read(SDFileSystem &sd); |
| ellisbhastroud | 14:08ac9aaa34c3 | 77 | void change_screen(); |
| ellisbhastroud | 13:681192091568 | 78 | void drawSettings(N5110 &lcd); |
| ellisbhastroud | 12:7f7fadb5c106 | 79 | void drawSettingsBars(N5110 &lcd); |
| ellisbhastroud | 4:035448357749 | 80 | void move_cursor(N5110 &lcd); |
| ellisbhastroud | 14:08ac9aaa34c3 | 81 | void cursor_pos_0(); |
| ellisbhastroud | 14:08ac9aaa34c3 | 82 | void cursor_pos_1(); |
| ellisbhastroud | 14:08ac9aaa34c3 | 83 | void cursor_pos_2(); |
| ellisbhastroud | 12:7f7fadb5c106 | 84 | void drawCursor(N5110 &lcd); |
| ellisbhastroud | 12:7f7fadb5c106 | 85 | |
| ellisbhastroud | 14:08ac9aaa34c3 | 86 | MenuChoice _screen; |
| ellisbhastroud | 14:08ac9aaa34c3 | 87 | bool _start_game_flag; |
| ellisbhastroud | 4:035448357749 | 88 | int _cursor_pos; |
| ellisbhastroud | 4:035448357749 | 89 | float _pot; |
| ellisbhastroud | 4:035448357749 | 90 | float _contrast; |
| ellisbhastroud | 4:035448357749 | 91 | float _brightness; |
| ellisbhastroud | 4:035448357749 | 92 | int _frame_rate; |
| ellisbhastroud | 13:681192091568 | 93 | int *_highscores_array; |
| ellisbhastroud | 14:08ac9aaa34c3 | 94 | int _n; |
| ellisbhastroud | 4:035448357749 | 95 | Direction _joy_direction; |
| ellisbhastroud | 16:c8d68cbd1ae2 | 96 | |
| ellisbhastroud | 16:c8d68cbd1ae2 | 97 | }; |
| ellisbhastroud | 16:c8d68cbd1ae2 | 98 | |
| ellisbhastroud | 16:c8d68cbd1ae2 | 99 | const int mini_logo[15][60] = { //"MINI" from logo shown on welcome screen |
| ellisbhastroud | 16:c8d68cbd1ae2 | 100 | { 0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 101 | { 0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 102 | { 0,0,0,1,1,0,1,1,0,0,0,0,1,1,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 103 | { 0,0,0,1,0,0,1,1,0,0,0,0,1,1,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 104 | { 0,0,0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 105 | { 0,0,0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 106 | { 0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 107 | { 0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 108 | { 0,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 109 | { 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 110 | { 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 111 | { 0,0,0,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 112 | { 0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 113 | { 0,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 114 | { 0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 115 | }; |
| ellisbhastroud | 16:c8d68cbd1ae2 | 116 | |
| ellisbhastroud | 16:c8d68cbd1ae2 | 117 | const int golf_logo[15][60] = { //"GOLF" from logo shown on welcome screen |
| ellisbhastroud | 16:c8d68cbd1ae2 | 118 | { 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 119 | { 0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 120 | { 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 121 | { 0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 122 | { 0,0,0,1,0,0,1,1,0,0,0,0,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 123 | { 0,0,0,1,0,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 124 | { 0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 125 | { 0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 126 | { 0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 127 | { 0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 128 | { 0,0,0,1,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 129 | { 0,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 130 | { 0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 131 | { 0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 132 | { 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0 }, |
| ellisbhastroud | 16:c8d68cbd1ae2 | 133 | |
| ellisbhastroud | 1:6179c2d67d19 | 134 | }; |
| ellisbhastroud | 1:6179c2d67d19 | 135 | |
| ellisbhastroud | 1:6179c2d67d19 | 136 | #endif |