Meteor defense project

Dependencies:   N5110 mbed

Revision:
34:6ac9541d4c31
Parent:
32:580d74825810
Child:
36:2608622e5018
--- a/GameEngine/GameEngine.cpp	Fri Apr 21 14:12:28 2017 +0000
+++ b/GameEngine/GameEngine.cpp	Sun Apr 23 21:09:32 2017 +0000
@@ -23,6 +23,7 @@
     
 }
 void GameEngine::init(int w) {
+    NumberOfLife = 3; //3 life on every wave
     _d1.droneInit(20, 46, 0, 42); //drone1 is taking left side pixel 0 to 42.
     _d2.droneInit(62, 46, 42, 84); //drone2 is taking right side pixel 42 to 83;
     weap.init();
@@ -42,7 +43,9 @@
         _gui.upgrading = 1;
         _gui.preventDoubleClick(pad);
         while (_gui.upgrading == 1) {
-            _gui.main_Upgrades(pad, lcd); //go to the main upgrade page
+            Variables copyVar = weap.getVar(); //this shit is not working.
+            printf("copyvar %d \n",copyVar.laserDamage);
+            _gui.upgrades(copyVar, pad, lcd); //go to the main upgrade page
             if (_gui.saveTheData == 1) {
                 Data _upgrades = _gui.savedata(); //saving data
                 //_gui.testingtest(_upgrades);  //code used to test the struct
@@ -86,25 +89,53 @@
     }
 }
 void GameEngine::checkGameRule(Gamepad &pad, N5110 &lcd) {
-    //the only way to lose is when the spawn reaches y = 46.
+    //the only way to lose a life is when a spawn reaches y = 46.
+    numberOfLife_leds(pad);
     for ( int x = 0; x < 84; x ++) {
-        if (Array[x][46] > 0) {
-            while (1) {
-                lcd.clear();
-                lcd.printString("Game Over",10,3);
-                lcd.refresh();   
-                pad.leds_on();
-                wait(0.1);
-                pad.leds_off();
-                wait(0.1);
+        if (Array[x][46] > 0) { //if anything reaches line y=46
+            NumberOfLife --;
+            printf("opps you lost a life. NumberOfLife = %d \n",NumberOfLife);
+            if (NumberOfLife == 0) {
+                while (1) {
+                    lcd.clear();
+                    lcd.printString("Game Over",10,3);
+                    lcd.refresh();   
+                    pad.leds_on();
+                    wait(0.1);
+                    pad.leds_off();
+                    wait(0.1);
+                }
             }
         }
     }       
 }
+void GameEngine::numberOfLife_leds(Gamepad &pad) { 
+    //light up LEDs depends on number of lifes left.
+    if (NumberOfLife == 3) {
+        pad.leds_on();
+    }
+    if (NumberOfLife == 2) {
+        pad.led(1, 1.0);
+        pad.led(2, 1.0);
+        pad.led(3, 0.0);
+        pad.led(4, 0.0);
+        pad.led(5, 1.0);
+        pad.led(6, 1.0);
+    }
+    if (NumberOfLife == 1) {
+        pad.led(1, 1.0);
+        pad.led(2, 0.0);
+        pad.led(3, 0.0);
+        pad.led(4, 0.0);
+        pad.led(5, 0.0);
+        pad.led(6, 1.0);   
+    }
+}
 void GameEngine::bombAndShield(Gamepad &pad, N5110 &lcd) { 
+    weap.init();
     weap.bombCooldown(Array2, pad, lcd);
     if (pad.check_event(Gamepad::X_PRESSED)) {
-        //to prevent from detonating the bomb at instant when button X is ay1identally pressed 
+        //to prevent from detonating the bomb at instant when button X is accidentally pressed 
     }
     if (pad.buttonhold_B == 1) { //if B pressed, generate shield. Shield doesnt have to be fully charged to be activated
         if (weap._shield > 0) { //shield will only activate if the shield has not depleted.