ELEC2645 (2017/18) / Mbed OS el16ajm
Committer:
Andrew_M
Date:
Sun May 06 22:42:49 2018 +0000
Revision:
10:279d3775d52c
Parent:
9:fe86ddbf7799
Child:
11:b25874e7efe4
Menu now has sub menus, still no impact on game although menu variables are ready to be used

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Andrew_M 8:9d01fd4a63ad 1 #include "Menu.h"
Andrew_M 8:9d01fd4a63ad 2
Andrew_M 8:9d01fd4a63ad 3 // nothing doing in the constructor and destructor
Andrew_M 8:9d01fd4a63ad 4 Menu::Menu()
Andrew_M 8:9d01fd4a63ad 5 {
Andrew_M 8:9d01fd4a63ad 6
Andrew_M 8:9d01fd4a63ad 7 }
Andrew_M 8:9d01fd4a63ad 8
Andrew_M 8:9d01fd4a63ad 9 Menu::~Menu()
Andrew_M 8:9d01fd4a63ad 10 {
Andrew_M 8:9d01fd4a63ad 11
Andrew_M 8:9d01fd4a63ad 12 }
Andrew_M 8:9d01fd4a63ad 13
Andrew_M 8:9d01fd4a63ad 14 void Menu::init()
Andrew_M 8:9d01fd4a63ad 15 {
Andrew_M 9:fe86ddbf7799 16 _start = false;
Andrew_M 8:9d01fd4a63ad 17
Andrew_M 10:279d3775d52c 18 _mainSelection = 1;
Andrew_M 10:279d3775d52c 19
Andrew_M 10:279d3775d52c 20 _difficulty = 2;
Andrew_M 10:279d3775d52c 21
Andrew_M 10:279d3775d52c 22 _difSelection = _difficulty;
Andrew_M 10:279d3775d52c 23
Andrew_M 10:279d3775d52c 24 _level = 1;
Andrew_M 10:279d3775d52c 25
Andrew_M 10:279d3775d52c 26 _lvlSelection = _level;
Andrew_M 10:279d3775d52c 27
Andrew_M 10:279d3775d52c 28 _buttonPressed = false;
Andrew_M 10:279d3775d52c 29
Andrew_M 10:279d3775d52c 30 _menuScreen = "main";
Andrew_M 9:fe86ddbf7799 31 }
Andrew_M 8:9d01fd4a63ad 32
Andrew_M 9:fe86ddbf7799 33 void Menu::update()
Andrew_M 9:fe86ddbf7799 34 {
Andrew_M 10:279d3775d52c 35 //moves arrow around menus
Andrew_M 10:279d3775d52c 36 if (_menuScreen == "main" ) {
Andrew_M 10:279d3775d52c 37 if (_d == N && _mainSelection > 1) { //checks the menu arrow location
Andrew_M 10:279d3775d52c 38 _mainSelection -= 1;
Andrew_M 10:279d3775d52c 39 } else if (_d == S && _mainSelection < 3) {
Andrew_M 10:279d3775d52c 40 _mainSelection += 1;
Andrew_M 10:279d3775d52c 41 }
Andrew_M 10:279d3775d52c 42 } else if (_menuScreen == "dif" ) {
Andrew_M 10:279d3775d52c 43 if (_d == N && _difSelection > 1) {
Andrew_M 10:279d3775d52c 44 _difSelection -= 1;
Andrew_M 10:279d3775d52c 45 } else if (_d == S && _difSelection < 3) {
Andrew_M 10:279d3775d52c 46 _difSelection += 1;
Andrew_M 10:279d3775d52c 47 }
Andrew_M 10:279d3775d52c 48 } else if (_menuScreen == "lvl" ) {
Andrew_M 10:279d3775d52c 49 if (_d == N && _lvlSelection > 1) {
Andrew_M 10:279d3775d52c 50 _lvlSelection -= 1;
Andrew_M 10:279d3775d52c 51 } else if (_d == S && _lvlSelection < 3) {
Andrew_M 10:279d3775d52c 52 _lvlSelection += 1;
Andrew_M 10:279d3775d52c 53 }
Andrew_M 9:fe86ddbf7799 54 }
Andrew_M 8:9d01fd4a63ad 55
Andrew_M 10:279d3775d52c 56 //selects item in menu
Andrew_M 10:279d3775d52c 57 if (_buttonPressed) {
Andrew_M 10:279d3775d52c 58 if (_menuScreen == "main" ) {
Andrew_M 10:279d3775d52c 59 if (_mainSelection == 1) {
Andrew_M 10:279d3775d52c 60 _start = true;
Andrew_M 10:279d3775d52c 61 } else if (_mainSelection == 2) {
Andrew_M 10:279d3775d52c 62 _menuScreen = "lvl";
Andrew_M 10:279d3775d52c 63 } else if (_mainSelection == 3) {
Andrew_M 10:279d3775d52c 64 _menuScreen = "dif";
Andrew_M 10:279d3775d52c 65 }
Andrew_M 10:279d3775d52c 66 } else {
Andrew_M 10:279d3775d52c 67 if (_menuScreen == "dif" ) {
Andrew_M 10:279d3775d52c 68 if (_difSelection == 1) {
Andrew_M 10:279d3775d52c 69 _difficulty = 1;
Andrew_M 10:279d3775d52c 70 } else if (_difSelection == 2) {
Andrew_M 10:279d3775d52c 71 _difficulty = 2;
Andrew_M 10:279d3775d52c 72 } else if (_difSelection == 3) {
Andrew_M 10:279d3775d52c 73 _difficulty = 3;
Andrew_M 10:279d3775d52c 74 }
Andrew_M 10:279d3775d52c 75 } else if (_menuScreen == "lvl" ) {
Andrew_M 10:279d3775d52c 76 if (_lvlSelection == 1) {
Andrew_M 10:279d3775d52c 77 _level = 1;
Andrew_M 10:279d3775d52c 78 } else if (_lvlSelection == 2) {
Andrew_M 10:279d3775d52c 79 _level = 2;
Andrew_M 10:279d3775d52c 80 } else if (_lvlSelection == 3) {
Andrew_M 10:279d3775d52c 81 _level = 3;
Andrew_M 10:279d3775d52c 82 }
Andrew_M 10:279d3775d52c 83 }
Andrew_M 9:fe86ddbf7799 84
Andrew_M 10:279d3775d52c 85 _menuScreen = "main";
Andrew_M 10:279d3775d52c 86
Andrew_M 10:279d3775d52c 87 }
Andrew_M 10:279d3775d52c 88
Andrew_M 10:279d3775d52c 89 }
Andrew_M 8:9d01fd4a63ad 90 }
Andrew_M 8:9d01fd4a63ad 91
Andrew_M 9:fe86ddbf7799 92 void Menu::read_input(Gamepad &pad)
Andrew_M 9:fe86ddbf7799 93 {
Andrew_M 10:279d3775d52c 94 _buttonPressed = false;
Andrew_M 10:279d3775d52c 95
Andrew_M 10:279d3775d52c 96 if ( pad.check_event(Gamepad::START_PRESSED)) {
Andrew_M 10:279d3775d52c 97 _buttonPressed = true;
Andrew_M 10:279d3775d52c 98 wait(0.1);
Andrew_M 10:279d3775d52c 99 }
Andrew_M 10:279d3775d52c 100 _d = pad.get_direction();
Andrew_M 10:279d3775d52c 101
Andrew_M 9:fe86ddbf7799 102 }
Andrew_M 9:fe86ddbf7799 103
Andrew_M 9:fe86ddbf7799 104 void Menu::draw(N5110 &lcd)
Andrew_M 9:fe86ddbf7799 105 {
Andrew_M 10:279d3775d52c 106 if (_menuScreen == "main" ) {
Andrew_M 10:279d3775d52c 107
Andrew_M 10:279d3775d52c 108 lcd.printString(" Start",0,1);
Andrew_M 10:279d3775d52c 109 lcd.printString(" Level Select",0,2);
Andrew_M 10:279d3775d52c 110 lcd.printString(" Difficulty",0,3);
Andrew_M 10:279d3775d52c 111
Andrew_M 10:279d3775d52c 112 lcd.printString(" >",0,_mainSelection);
Andrew_M 10:279d3775d52c 113
Andrew_M 10:279d3775d52c 114 } else if ( _menuScreen == "dif") {
Andrew_M 9:fe86ddbf7799 115
Andrew_M 10:279d3775d52c 116 lcd.printString(" Easy",0,1);
Andrew_M 10:279d3775d52c 117 lcd.printString(" Normal",0,2);
Andrew_M 10:279d3775d52c 118 lcd.printString(" Hard",0,3);
Andrew_M 10:279d3775d52c 119
Andrew_M 10:279d3775d52c 120 lcd.printString(" >",0,_difSelection);
Andrew_M 10:279d3775d52c 121
Andrew_M 10:279d3775d52c 122 } else if ( _menuScreen == "lvl") {
Andrew_M 10:279d3775d52c 123
Andrew_M 10:279d3775d52c 124 lcd.printString(" 1",0,1);
Andrew_M 10:279d3775d52c 125 lcd.printString(" 2",0,2);
Andrew_M 10:279d3775d52c 126 lcd.printString(" 3",0,3);
Andrew_M 10:279d3775d52c 127
Andrew_M 10:279d3775d52c 128 lcd.printString(" >",0,_lvlSelection);
Andrew_M 10:279d3775d52c 129 }
Andrew_M 9:fe86ddbf7799 130 }
Andrew_M 9:fe86ddbf7799 131
Andrew_M 9:fe86ddbf7799 132 bool Menu::started()
Andrew_M 9:fe86ddbf7799 133 {
Andrew_M 9:fe86ddbf7799 134 return _start;
Andrew_M 9:fe86ddbf7799 135 }
Andrew_M 10:279d3775d52c 136
Andrew_M 10:279d3775d52c 137 int Menu::getDif()
Andrew_M 10:279d3775d52c 138 {
Andrew_M 10:279d3775d52c 139 return _difficulty;
Andrew_M 10:279d3775d52c 140 }