Meteor defense project

Dependencies:   N5110 mbed

Committer:
jasper0712
Date:
Thu May 04 16:55:26 2017 +0000
Revision:
50:082feedcdd22
converted library to folder

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jasper0712 50:082feedcdd22 1 #include "GUI.h"
jasper0712 50:082feedcdd22 2
jasper0712 50:082feedcdd22 3
jasper0712 50:082feedcdd22 4 GUI::GUI()
jasper0712 50:082feedcdd22 5 {
jasper0712 50:082feedcdd22 6
jasper0712 50:082feedcdd22 7 }
jasper0712 50:082feedcdd22 8
jasper0712 50:082feedcdd22 9 GUI::~GUI()
jasper0712 50:082feedcdd22 10 {
jasper0712 50:082feedcdd22 11
jasper0712 50:082feedcdd22 12 }
jasper0712 50:082feedcdd22 13 void GUI::startingMenu(N5110 &lcd) {
jasper0712 50:082feedcdd22 14 lcd.printString("Meteor defense",0,0);
jasper0712 50:082feedcdd22 15 lcd.printString("Press start",10,2);
jasper0712 50:082feedcdd22 16 lcd.printString("to play",10,3);
jasper0712 50:082feedcdd22 17 lcd.printString("by Lee.",48,5);
jasper0712 50:082feedcdd22 18 }
jasper0712 50:082feedcdd22 19 void GUI::upgrades(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, Gamepad &pad, N5110 &lcd) {
jasper0712 50:082feedcdd22 20 printf("test struct passing %d %d %d %d %d %d %d %d \n",a,b,c,d,e,f,g,h);
jasper0712 50:082feedcdd22 21 Cursors _cursor = cursor(pad);
jasper0712 50:082feedcdd22 22 if (pointsGiven == 0){ //if upgrade points are not yet given
jasper0712 50:082feedcdd22 23 pointsUpgrade += 2; //give the points
jasper0712 50:082feedcdd22 24 pointsGiven = 1;
jasper0712 50:082feedcdd22 25 }
jasper0712 50:082feedcdd22 26 if (upgrading1_flag == 0) { //main upgrades page
jasper0712 50:082feedcdd22 27 main_UpgradesPage(lcd);
jasper0712 50:082feedcdd22 28 cursor_y = _cursor.number_y;
jasper0712 50:082feedcdd22 29 drawCursor(cursor_y, lcd);
jasper0712 50:082feedcdd22 30 printf("cursor_y = %d \n",cursor_y);
jasper0712 50:082feedcdd22 31 } else { //weapon picked
jasper0712 50:082feedcdd22 32 cursor_y1 = _cursor.number_y;
jasper0712 50:082feedcdd22 33 drawCursor(cursor_y1, lcd);
jasper0712 50:082feedcdd22 34 //picking weapon's variables
jasper0712 50:082feedcdd22 35 if (cursor_y == 0){
jasper0712 50:082feedcdd22 36 //printf("laser selected \n");
jasper0712 50:082feedcdd22 37 laser_UpgradesPage(a, lcd);
jasper0712 50:082feedcdd22 38 } else if (cursor_y == 1){
jasper0712 50:082feedcdd22 39 //printf("bomb selected \n");
jasper0712 50:082feedcdd22 40 bomb_UpgradesPage(b, c, d, lcd);
jasper0712 50:082feedcdd22 41 cursor_y = 1;
jasper0712 50:082feedcdd22 42 } else if (cursor_y == 2){
jasper0712 50:082feedcdd22 43 //printf("drone selected \n");
jasper0712 50:082feedcdd22 44 drone_UpgradesPage(e, f, lcd);
jasper0712 50:082feedcdd22 45 } else if (cursor_y == 3){
jasper0712 50:082feedcdd22 46 //printf("shield selected \n");
jasper0712 50:082feedcdd22 47 shield_UpgradesPage(g, h, lcd);
jasper0712 50:082feedcdd22 48 } else if (cursor_y == 4) {
jasper0712 50:082feedcdd22 49 cannon_UpgradesPage(i, j, k, lcd);
jasper0712 50:082feedcdd22 50 cursor_y = 4;
jasper0712 50:082feedcdd22 51 }
jasper0712 50:082feedcdd22 52 if (pad.check_event(Gamepad::BACK_PRESSED)) { //if back button is pressed
jasper0712 50:082feedcdd22 53 upgrading1_flag = 0; //back to the main_upgrades.
jasper0712 50:082feedcdd22 54 cc = 0; // reset the cursor
jasper0712 50:082feedcdd22 55 }
jasper0712 50:082feedcdd22 56 upgradesData(pad);
jasper0712 50:082feedcdd22 57 }
jasper0712 50:082feedcdd22 58 pad_events(pad);
jasper0712 50:082feedcdd22 59 }
jasper0712 50:082feedcdd22 60 void GUI::pad_events(Gamepad &pad) {
jasper0712 50:082feedcdd22 61 if (pad.check_event(Gamepad::A_PRESSED)) { //if A button is pressed
jasper0712 50:082feedcdd22 62 upgrading1_flag = 1; //go into the weapons picked.
jasper0712 50:082feedcdd22 63 cc = 0; //reset the cursor
jasper0712 50:082feedcdd22 64 pad.tone(750.0,0.1);
jasper0712 50:082feedcdd22 65 preventDoubleClick(pad);
jasper0712 50:082feedcdd22 66 }
jasper0712 50:082feedcdd22 67 if (pointsUpgrade == 0) { // when no more points available
jasper0712 50:082feedcdd22 68 if (pad.check_event(Gamepad::START_PRESSED)) { //pressing start will complete the upgrades
jasper0712 50:082feedcdd22 69 pointsGiven = 0;
jasper0712 50:082feedcdd22 70 saveTheData_flag = 1;
jasper0712 50:082feedcdd22 71 preventDoubleClick(pad);
jasper0712 50:082feedcdd22 72 }
jasper0712 50:082feedcdd22 73 }
jasper0712 50:082feedcdd22 74 }
jasper0712 50:082feedcdd22 75 void GUI::upgradesData(Gamepad &pad) {
jasper0712 50:082feedcdd22 76 //printf("p = %d \n",pointsUpgrade);
jasper0712 50:082feedcdd22 77 if (pointsUpgrade == 2) { //if there are 2 points remaining
jasper0712 50:082feedcdd22 78 if (pad.check_event(Gamepad::A_PRESSED)) { //if A button is pressed inside the weapons picked.
jasper0712 50:082feedcdd22 79 pointsUpgrade -= 1; // minus an upgrade point
jasper0712 50:082feedcdd22 80 upgradePicked = cursor_y; //saving upgrades data
jasper0712 50:082feedcdd22 81 upgradePicked1 = cursor_y1;
jasper0712 50:082feedcdd22 82 pad.tone(750.0,0.1);
jasper0712 50:082feedcdd22 83 preventDoubleClick(pad);
jasper0712 50:082feedcdd22 84 //printf("p = %d, upgradePicked = %d, upgradePicked1 = %d \n",pointsUpgrade,upgradePicked,upgradePicked1);
jasper0712 50:082feedcdd22 85 }
jasper0712 50:082feedcdd22 86 } else if (pointsUpgrade == 1) {
jasper0712 50:082feedcdd22 87 if (pad.check_event(Gamepad::A_PRESSED)) { //if A button is pressed inside the weapons picked.
jasper0712 50:082feedcdd22 88 pointsUpgrade -= 1; // minus an upgrade point
jasper0712 50:082feedcdd22 89 upgrade1Picked = cursor_y; //saving upgrades data
jasper0712 50:082feedcdd22 90 upgrade1Picked1 = cursor_y1;
jasper0712 50:082feedcdd22 91 pad.tone(750.0,0.1);
jasper0712 50:082feedcdd22 92 preventDoubleClick(pad);
jasper0712 50:082feedcdd22 93 //printf("p = %d, upgrade1Picked = %d, upgrade1Picked1 = %d \n",pointsUpgrade,upgrade1Picked,upgrade1Picked1);
jasper0712 50:082feedcdd22 94 }
jasper0712 50:082feedcdd22 95 } else if (pointsUpgrade == 0) {//if no more points left, bring the player back to main upgrade page
jasper0712 50:082feedcdd22 96 upgrading1_flag = 0;
jasper0712 50:082feedcdd22 97 }
jasper0712 50:082feedcdd22 98 }
jasper0712 50:082feedcdd22 99 void GUI::main_UpgradesPage(N5110 &lcd) {
jasper0712 50:082feedcdd22 100 options = 4; // 0, 1, 2, 3
jasper0712 50:082feedcdd22 101 sprintf(pointsRemaining, "Points : %d",pointsUpgrade);
jasper0712 50:082feedcdd22 102 lcd.printString(pointsRemaining,1,0);
jasper0712 50:082feedcdd22 103 lcd.printString("Laser",10,1); //option 0
jasper0712 50:082feedcdd22 104 lcd.printString("Bomb",10,2); //option 1
jasper0712 50:082feedcdd22 105 lcd.printString("Drone",10,3); //option 2
jasper0712 50:082feedcdd22 106 lcd.printString("Shield",10,4); //option 3
jasper0712 50:082feedcdd22 107 lcd.printString("Cannon",10,5); //option 4
jasper0712 50:082feedcdd22 108 if (pointsUpgrade == 0) { //if no more points left.
jasper0712 50:082feedcdd22 109 lcd.printString("Done",57,5);
jasper0712 50:082feedcdd22 110 }
jasper0712 50:082feedcdd22 111 }
jasper0712 50:082feedcdd22 112 void GUI::laser_UpgradesPage(int laserDamage, N5110 &lcd) {
jasper0712 50:082feedcdd22 113 options = 0;
jasper0712 50:082feedcdd22 114 sprintf(upgrade1, "Damage %d", laserDamage);
jasper0712 50:082feedcdd22 115 lcd.printString("Laser",1,0);
jasper0712 50:082feedcdd22 116 lcd.printString(upgrade1,10,1);
jasper0712 50:082feedcdd22 117 }
jasper0712 50:082feedcdd22 118 void GUI::bomb_UpgradesPage(int bombDamage, int bombR, int bombCooldown, N5110 &lcd) {
jasper0712 50:082feedcdd22 119 options = 2;
jasper0712 50:082feedcdd22 120 sprintf(upgrade1, "Damage %d", bombDamage);
jasper0712 50:082feedcdd22 121 sprintf(upgrade2, "Radius %d", bombR);
jasper0712 50:082feedcdd22 122 sprintf(upgrade3, "Cooldown %d", bombCooldown);
jasper0712 50:082feedcdd22 123 lcd.printString("Bomb",1,0);
jasper0712 50:082feedcdd22 124 lcd.printString(upgrade1,10,1);
jasper0712 50:082feedcdd22 125 lcd.printString(upgrade2,10,2);
jasper0712 50:082feedcdd22 126 lcd.printString(upgrade3,10,3);
jasper0712 50:082feedcdd22 127 }
jasper0712 50:082feedcdd22 128 void GUI::drone_UpgradesPage(int droneDamage, int droneRange, N5110 &lcd) {
jasper0712 50:082feedcdd22 129 options = 1;
jasper0712 50:082feedcdd22 130 sprintf(upgrade1, "Damage %d", droneDamage);
jasper0712 50:082feedcdd22 131 sprintf(upgrade2, "Atk Range %d", droneRange);
jasper0712 50:082feedcdd22 132 lcd.printString("Drone",1,0);
jasper0712 50:082feedcdd22 133 lcd.printString(upgrade1,10,1);
jasper0712 50:082feedcdd22 134 lcd.printString(upgrade2,10,2);
jasper0712 50:082feedcdd22 135 }
jasper0712 50:082feedcdd22 136 void GUI::shield_UpgradesPage(int shieldCapacity, int shieldRegenRate, N5110 &lcd) {
jasper0712 50:082feedcdd22 137 options = 1;
jasper0712 50:082feedcdd22 138 sprintf(upgrade1, "Cpcty %d", shieldCapacity);
jasper0712 50:082feedcdd22 139 sprintf(upgrade2, "RegenRate %d", shieldRegenRate);
jasper0712 50:082feedcdd22 140 lcd.printString("Shield",1,0);
jasper0712 50:082feedcdd22 141 lcd.printString(upgrade1,10,1);
jasper0712 50:082feedcdd22 142 lcd.printString(upgrade2,10,2);
jasper0712 50:082feedcdd22 143 }
jasper0712 50:082feedcdd22 144 void GUI::cannon_UpgradesPage(int cannonDamage, int cannonCapacity, int cannonRegenRate, N5110 &lcd) {
jasper0712 50:082feedcdd22 145 options = 2;
jasper0712 50:082feedcdd22 146 sprintf(upgrade1, "Damage %d", cannonDamage);
jasper0712 50:082feedcdd22 147 sprintf(upgrade2, "Cpcty %d", cannonCapacity);
jasper0712 50:082feedcdd22 148 sprintf(upgrade3, "RegenRate %d", cannonRegenRate);
jasper0712 50:082feedcdd22 149 lcd.printString("Cannon",1,0);
jasper0712 50:082feedcdd22 150 lcd.printString(upgrade1,10,1);
jasper0712 50:082feedcdd22 151 lcd.printString(upgrade2,10,2);
jasper0712 50:082feedcdd22 152 lcd.printString(upgrade3,10,3);
jasper0712 50:082feedcdd22 153 }
jasper0712 50:082feedcdd22 154 Data GUI::get_data() {
jasper0712 50:082feedcdd22 155 Data sd = {upgradePicked,
jasper0712 50:082feedcdd22 156 upgradePicked1,
jasper0712 50:082feedcdd22 157 upgrade1Picked,
jasper0712 50:082feedcdd22 158 upgrade1Picked1,
jasper0712 50:082feedcdd22 159 };
jasper0712 50:082feedcdd22 160 return sd;
jasper0712 50:082feedcdd22 161 }
jasper0712 50:082feedcdd22 162 Cursors GUI::cursor(Gamepad &pad) {
jasper0712 50:082feedcdd22 163 Vector2D coordinate = pad.get_coord();
jasper0712 50:082feedcdd22 164 float y = coordinate.y;
jasper0712 50:082feedcdd22 165 //printf(" y = %f \n",y);
jasper0712 50:082feedcdd22 166 if (y < -0.8f) {
jasper0712 50:082feedcdd22 167 printf("going down \n");
jasper0712 50:082feedcdd22 168 if (cc < options) {
jasper0712 50:082feedcdd22 169 cc += 1;
jasper0712 50:082feedcdd22 170 //printf("cc = %d \n",cc);
jasper0712 50:082feedcdd22 171 while (1) {
jasper0712 50:082feedcdd22 172 //printf("release joystick pls.");
jasper0712 50:082feedcdd22 173 //printf("cc = %d \n",cc);
jasper0712 50:082feedcdd22 174 wait(0.1);
jasper0712 50:082feedcdd22 175 Vector2D coordinate = pad.get_coord();
jasper0712 50:082feedcdd22 176 float y = coordinate.y;
jasper0712 50:082feedcdd22 177 if (y > -0.1f) {
jasper0712 50:082feedcdd22 178 break; // when joystick released. break out of this while loop.
jasper0712 50:082feedcdd22 179 }
jasper0712 50:082feedcdd22 180 }
jasper0712 50:082feedcdd22 181 }
jasper0712 50:082feedcdd22 182 }
jasper0712 50:082feedcdd22 183 if (y > 0.8f) {
jasper0712 50:082feedcdd22 184 printf("going up \n");
jasper0712 50:082feedcdd22 185 if (cc > 0) {
jasper0712 50:082feedcdd22 186 cc -= 1;
jasper0712 50:082feedcdd22 187 //("cc = %d /n",cc);
jasper0712 50:082feedcdd22 188 while (1) {
jasper0712 50:082feedcdd22 189 //printf("release joystick pls. ");
jasper0712 50:082feedcdd22 190 //printf("cc = %d /n",cc);
jasper0712 50:082feedcdd22 191 wait(0.1);
jasper0712 50:082feedcdd22 192 Vector2D coordinate = pad.get_coord();
jasper0712 50:082feedcdd22 193 float y = coordinate.y;
jasper0712 50:082feedcdd22 194 if (y < 0.1f) {
jasper0712 50:082feedcdd22 195 break; //when joystick released. break out of this while loop.
jasper0712 50:082feedcdd22 196 }
jasper0712 50:082feedcdd22 197 }
jasper0712 50:082feedcdd22 198 }
jasper0712 50:082feedcdd22 199 }
jasper0712 50:082feedcdd22 200 Cursors _cursor = {cc};
jasper0712 50:082feedcdd22 201 return _cursor;
jasper0712 50:082feedcdd22 202 }
jasper0712 50:082feedcdd22 203 void GUI::drawCursor(int Cy, N5110 &lcd){ //simple square cursor
jasper0712 50:082feedcdd22 204 lcd.setPixel(4,11 + Cy * 8);
jasper0712 50:082feedcdd22 205 lcd.setPixel(5,11 + Cy * 8);
jasper0712 50:082feedcdd22 206 lcd.setPixel(4,12 + Cy * 8);
jasper0712 50:082feedcdd22 207 lcd.setPixel(5,12 + Cy * 8);
jasper0712 50:082feedcdd22 208 }
jasper0712 50:082feedcdd22 209 void GUI::preventDoubleClick(Gamepad &pad) { //use this to prevent unintended double clicking that always happens with the gamepad
jasper0712 50:082feedcdd22 210 wait(0.1); //yes, the gamepad is that bad.
jasper0712 50:082feedcdd22 211 if (pad.check_event(Gamepad::A_PRESSED)) {
jasper0712 50:082feedcdd22 212 printf("A double click prevented!!! \n");
jasper0712 50:082feedcdd22 213 }
jasper0712 50:082feedcdd22 214 if (pad.check_event(Gamepad::START_PRESSED)) {
jasper0712 50:082feedcdd22 215 printf("START double click prevented!!! \n");
jasper0712 50:082feedcdd22 216 }
jasper0712 50:082feedcdd22 217 if (pad.check_event(Gamepad::BACK_PRESSED)) {
jasper0712 50:082feedcdd22 218 printf("BACK double click prevented!!! \n");
jasper0712 50:082feedcdd22 219 }
jasper0712 50:082feedcdd22 220 }