Adventure game written for ECE2035 at the Georgia Institute of Technology
Dependencies: mbed wave_player 4DGL-uLCD-SE MMA8452
pausemenu.cpp@5:93a4c396c1af, 2019-10-26 (annotated)
- Committer:
- trmontgomery
- Date:
- Sat Oct 26 15:44:26 2019 +0000
- Revision:
- 5:93a4c396c1af
test
Who changed what in which revision?
User | Revision | Line number | New 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 | } |