ELEC2645 (2018/19) / Mbed 2 deprecated el17ebs

Dependencies:   mbed FATFileSystem

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?

UserRevisionLine numberNew 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