Adventure game written for ECE2035 at the Georgia Institute of Technology

Dependencies:   mbed wave_player 4DGL-uLCD-SE MMA8452

Committer:
trmontgomery
Date:
Sat Oct 26 15:44:26 2019 +0000
Revision:
5:93a4c396c1af
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
trmontgomery 5:93a4c396c1af 1 // Project includes
trmontgomery 5:93a4c396c1af 2 #include "globals.h"
trmontgomery 5:93a4c396c1af 3 #include "hardware.h"
trmontgomery 5:93a4c396c1af 4 #include "map.h"
trmontgomery 5:93a4c396c1af 5 #include "graphics.h"
trmontgomery 5:93a4c396c1af 6 #include "speech.h"
trmontgomery 5:93a4c396c1af 7 #include "pausemenu.h"
trmontgomery 5:93a4c396c1af 8
trmontgomery 5:93a4c396c1af 9 int PauseMenu::switch_ax = 0;
trmontgomery 5:93a4c396c1af 10
trmontgomery 5:93a4c396c1af 11 PauseMenu::PauseMenu(Player* player) :
trmontgomery 5:93a4c396c1af 12 p(player),
trmontgomery 5:93a4c396c1af 13 quest_complete(player->quest_complete)
trmontgomery 5:93a4c396c1af 14 {
trmontgomery 5:93a4c396c1af 15
trmontgomery 5:93a4c396c1af 16 //draw pink rectangle on whole screen
trmontgomery 5:93a4c396c1af 17 uLCD.filled_rectangle(0, 128, 128, 70, PINK1);
trmontgomery 5:93a4c396c1af 18
trmontgomery 5:93a4c396c1af 19 // write title
trmontgomery 5:93a4c396c1af 20 uLCD.locate(1,11);
trmontgomery 5:93a4c396c1af 21 uLCD.textbackground_color(YELLOW);
trmontgomery 5:93a4c396c1af 22 uLCD.color(BLACK);
trmontgomery 5:93a4c396c1af 23 uLCD.printf("Game Paused");
trmontgomery 5:93a4c396c1af 24
trmontgomery 5:93a4c396c1af 25 }
trmontgomery 5:93a4c396c1af 26
trmontgomery 5:93a4c396c1af 27 int PauseMenu::update(int action){
trmontgomery 5:93a4c396c1af 28 switch(action)
trmontgomery 5:93a4c396c1af 29 {
trmontgomery 5:93a4c396c1af 30 case 1:
trmontgomery 5:93a4c396c1af 31 //if button 1 pressed move to next menu item
trmontgomery 5:93a4c396c1af 32 button_presses = button_presses++;
trmontgomery 5:93a4c396c1af 33 break;
trmontgomery 5:93a4c396c1af 34 case 2:
trmontgomery 5:93a4c396c1af 35 if (button_presses%4 == 0) {//Start game
trmontgomery 5:93a4c396c1af 36 o_status();
trmontgomery 5:93a4c396c1af 37 } else if (button_presses%4 == 1){ //Quit (screen cut to black)
trmontgomery 5:93a4c396c1af 38 o_inventory();
trmontgomery 5:93a4c396c1af 39 }else if (button_presses%4 == 2){ //Quit (screen cut to black)
trmontgomery 5:93a4c396c1af 40 set_config(o_config());
trmontgomery 5:93a4c396c1af 41 } else { //screen go white
trmontgomery 5:93a4c396c1af 42 exit_en = true;
trmontgomery 5:93a4c396c1af 43 terminate = true;
trmontgomery 5:93a4c396c1af 44 }
trmontgomery 5:93a4c396c1af 45 break;
trmontgomery 5:93a4c396c1af 46 }
trmontgomery 5:93a4c396c1af 47 return 0;
trmontgomery 5:93a4c396c1af 48 }
trmontgomery 5:93a4c396c1af 49
trmontgomery 5:93a4c396c1af 50 void PauseMenu::draw(int){
trmontgomery 5:93a4c396c1af 51 if (button_presses%4 == 0){
trmontgomery 5:93a4c396c1af 52 status_color = GREEN;
trmontgomery 5:93a4c396c1af 53 } else if (button_presses%4 == 1){
trmontgomery 5:93a4c396c1af 54 inventory_color = GREEN;
trmontgomery 5:93a4c396c1af 55 }else if (button_presses%4 == 2){
trmontgomery 5:93a4c396c1af 56 config_color = GREEN;
trmontgomery 5:93a4c396c1af 57 } else{
trmontgomery 5:93a4c396c1af 58 exit_color = GREEN;
trmontgomery 5:93a4c396c1af 59 }
trmontgomery 5:93a4c396c1af 60
trmontgomery 5:93a4c396c1af 61 uLCD.locate(1,11);
trmontgomery 5:93a4c396c1af 62 uLCD.textbackground_color(YELLOW);
trmontgomery 5:93a4c396c1af 63 uLCD.color(BLACK);
trmontgomery 5:93a4c396c1af 64 uLCD.printf("Game Paused");
trmontgomery 5:93a4c396c1af 65
trmontgomery 5:93a4c396c1af 66 uLCD.locate(1,12);
trmontgomery 5:93a4c396c1af 67 uLCD.color(status_color);
trmontgomery 5:93a4c396c1af 68 uLCD.printf("View Status");
trmontgomery 5:93a4c396c1af 69
trmontgomery 5:93a4c396c1af 70 uLCD.locate(1,13);
trmontgomery 5:93a4c396c1af 71 uLCD.color(inventory_color);
trmontgomery 5:93a4c396c1af 72 uLCD.printf("Inventory");
trmontgomery 5:93a4c396c1af 73
trmontgomery 5:93a4c396c1af 74 uLCD.locate(1,14);
trmontgomery 5:93a4c396c1af 75 uLCD.color(config_color);
trmontgomery 5:93a4c396c1af 76 uLCD.printf("Config");
trmontgomery 5:93a4c396c1af 77
trmontgomery 5:93a4c396c1af 78 uLCD.locate(1,15);
trmontgomery 5:93a4c396c1af 79 uLCD.color(exit_color);
trmontgomery 5:93a4c396c1af 80 uLCD.printf("Exit");
trmontgomery 5:93a4c396c1af 81
trmontgomery 5:93a4c396c1af 82
trmontgomery 5:93a4c396c1af 83 status_color = BLACK;
trmontgomery 5:93a4c396c1af 84 inventory_color = BLACK;
trmontgomery 5:93a4c396c1af 85 config_color = BLACK;
trmontgomery 5:93a4c396c1af 86 exit_color = BLACK;
trmontgomery 5:93a4c396c1af 87 }
trmontgomery 5:93a4c396c1af 88
trmontgomery 5:93a4c396c1af 89 int PauseMenu::o_status(){
trmontgomery 5:93a4c396c1af 90 uLCD.filled_rectangle(0, 128, 128, 80, PINK1);
trmontgomery 5:93a4c396c1af 91 uLCD.locate(1,12);
trmontgomery 5:93a4c396c1af 92 uLCD.textbackground_color(YELLOW);
trmontgomery 5:93a4c396c1af 93 uLCD.color(BLACK);
trmontgomery 5:93a4c396c1af 94
trmontgomery 5:93a4c396c1af 95 if (quest_complete){
trmontgomery 5:93a4c396c1af 96 uLCD.printf("Congrats! You have completed your quest!");
trmontgomery 5:93a4c396c1af 97 } else{
trmontgomery 5:93a4c396c1af 98 uLCD.printf("Quest is not completed");
trmontgomery 5:93a4c396c1af 99 }
trmontgomery 5:93a4c396c1af 100
trmontgomery 5:93a4c396c1af 101 uLCD.locate(10,15);
trmontgomery 5:93a4c396c1af 102 uLCD.color(GREEN);
trmontgomery 5:93a4c396c1af 103 uLCD.printf("Back");
trmontgomery 5:93a4c396c1af 104
trmontgomery 5:93a4c396c1af 105 GameInputs inp = read_inputs();
trmontgomery 5:93a4c396c1af 106 while(1){
trmontgomery 5:93a4c396c1af 107 if(!inp.b3){
trmontgomery 5:93a4c396c1af 108 uLCD.filled_rectangle(0, 128, 128, 80, PINK1); //erase option
trmontgomery 5:93a4c396c1af 109 wait(1);
trmontgomery 5:93a4c396c1af 110 return 0;
trmontgomery 5:93a4c396c1af 111 }
trmontgomery 5:93a4c396c1af 112 inp = read_inputs();
trmontgomery 5:93a4c396c1af 113 wait(1);
trmontgomery 5:93a4c396c1af 114 }
trmontgomery 5:93a4c396c1af 115 }
trmontgomery 5:93a4c396c1af 116 int PauseMenu::o_inventory(){
trmontgomery 5:93a4c396c1af 117 uLCD.filled_rectangle(0, 128, 128, 80, PINK1);
trmontgomery 5:93a4c396c1af 118 uLCD.locate(1,12);
trmontgomery 5:93a4c396c1af 119 uLCD.textbackground_color(YELLOW);
trmontgomery 5:93a4c396c1af 120 uLCD.color(BLACK);
trmontgomery 5:93a4c396c1af 121
trmontgomery 5:93a4c396c1af 122 char str[30];
trmontgomery 5:93a4c396c1af 123 sprintf(str, "You have %d gems.", p->gems);
trmontgomery 5:93a4c396c1af 124 uLCD.printf(str);
trmontgomery 5:93a4c396c1af 125
trmontgomery 5:93a4c396c1af 126 uLCD.locate(10,15);
trmontgomery 5:93a4c396c1af 127 uLCD.color(GREEN);
trmontgomery 5:93a4c396c1af 128 uLCD.printf("Back");
trmontgomery 5:93a4c396c1af 129
trmontgomery 5:93a4c396c1af 130 GameInputs inp = read_inputs();
trmontgomery 5:93a4c396c1af 131 while(1){
trmontgomery 5:93a4c396c1af 132 if(!inp.b3){
trmontgomery 5:93a4c396c1af 133 uLCD.filled_rectangle(0, 128, 128, 80, PINK1); //erase option
trmontgomery 5:93a4c396c1af 134 wait(1);
trmontgomery 5:93a4c396c1af 135 return 0;
trmontgomery 5:93a4c396c1af 136 }
trmontgomery 5:93a4c396c1af 137 inp = read_inputs();
trmontgomery 5:93a4c396c1af 138 wait(1);
trmontgomery 5:93a4c396c1af 139 }
trmontgomery 5:93a4c396c1af 140 }
trmontgomery 5:93a4c396c1af 141 int PauseMenu::o_config(){
trmontgomery 5:93a4c396c1af 142 uLCD.filled_rectangle(0, 128, 128, 80, PINK1);
trmontgomery 5:93a4c396c1af 143 uLCD.locate(1,12);
trmontgomery 5:93a4c396c1af 144 uLCD.textbackground_color(YELLOW);
trmontgomery 5:93a4c396c1af 145 uLCD.color(BLACK);
trmontgomery 5:93a4c396c1af 146
trmontgomery 5:93a4c396c1af 147 uLCD.printf("Press Button 2 to Switch Axis.");
trmontgomery 5:93a4c396c1af 148
trmontgomery 5:93a4c396c1af 149 uLCD.locate(10,15);
trmontgomery 5:93a4c396c1af 150 uLCD.color(GREEN);
trmontgomery 5:93a4c396c1af 151 uLCD.printf("Back");
trmontgomery 5:93a4c396c1af 152
trmontgomery 5:93a4c396c1af 153 int switch1;
trmontgomery 5:93a4c396c1af 154 GameInputs inp = read_inputs();
trmontgomery 5:93a4c396c1af 155 while(1){
trmontgomery 5:93a4c396c1af 156 if(!inp.b2){
trmontgomery 5:93a4c396c1af 157 uLCD.filled_rectangle(0, 128, 128, 80, PINK1);
trmontgomery 5:93a4c396c1af 158 uLCD.locate(1,12);
trmontgomery 5:93a4c396c1af 159 uLCD.printf("Axis switched.");
trmontgomery 5:93a4c396c1af 160 uLCD.color(BLACK);
trmontgomery 5:93a4c396c1af 161 uLCD.locate(10,15);
trmontgomery 5:93a4c396c1af 162 uLCD.color(GREEN);
trmontgomery 5:93a4c396c1af 163 uLCD.printf("Back");
trmontgomery 5:93a4c396c1af 164 int switch1 = !switch_ax;
trmontgomery 5:93a4c396c1af 165 }
trmontgomery 5:93a4c396c1af 166
trmontgomery 5:93a4c396c1af 167 if(!inp.b3){
trmontgomery 5:93a4c396c1af 168 uLCD.filled_rectangle(0, 128, 128, 80, PINK1); //erase option
trmontgomery 5:93a4c396c1af 169 wait(1);
trmontgomery 5:93a4c396c1af 170 return switch1;
trmontgomery 5:93a4c396c1af 171 }
trmontgomery 5:93a4c396c1af 172 inp = read_inputs();
trmontgomery 5:93a4c396c1af 173 wait(1);
trmontgomery 5:93a4c396c1af 174 }
trmontgomery 5:93a4c396c1af 175 }