Implemented smartbombs.
authorlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Tue, 12 Dec 2006 18:45:20 +0000 (18:45 +0000)
committerlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Tue, 12 Dec 2006 18:45:20 +0000 (18:45 +0000)
Pod drop on dead lander is still broken.
Landers now go straight up with pods.

git-svn-id: svn+ssh://svn/var/repos/curfender@586 bc5cbbab-a4ec-0310-bb52-ff3d296db539

CHANGELOG
main.cpp

index faddefd..34de11d 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,4 @@
+Implemented Smartbombs.
 Radar now wraps properly.
 Landers will now ignore or abort chasing dead or rescued pods.
 Landers grab pods, kill them, go crazy.
index 326c711..ced1016 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -299,7 +299,6 @@ game_object lander_init(game_object lander){
 }
 
 game_object encrazify(game_object lander, game_object crazy){
-  
   crazy.active=1;
   crazy.x = lander.x;
   crazy.y = lander.y;  
@@ -307,7 +306,7 @@ game_object encrazify(game_object lander, game_object crazy){
   crazy.vspeed = 0;
   crazy.vtime = lander.vtime;
   crazy.direction = lander.direction;
-  crazy.speed = lander.speed;
+  crazy.speed = 1;
 
   return crazy;
 }
@@ -499,6 +498,8 @@ game_object pod_chase(game_object lander, game_object pod){
       if(lander.x>pod.x-1){
        lander.phase = 3;
        lander.vtime = 0;
+       lander.speed = 0;
+       lander.direction = 5;
       };
     };
     
@@ -633,14 +634,18 @@ int main(){
     strcpy (pods[podloop].line2, " + ");
     strcpy (pods[podloop].line3, " + ");
     strcpy (pods[podloop].radar, "x");
+
+    pods[podloop].chase = 0;
   };
 
-  for(int podloop = 1; podloop<podmax; podloop=podloop+2){ 
+  for(int podloop = 1; podloop<podmax+1; podloop=podloop+2){ 
     strcpy (pods[podloop].line0, " + ");
     strcpy (pods[podloop].line1, " + ");
     strcpy (pods[podloop].line2, " x ");
     strcpy (pods[podloop].line3, " x ");
     strcpy (pods[podloop].radar, "x");
+    
+    pods[podloop].chase = 0;
   };
 
   //bullets
@@ -729,6 +734,7 @@ int main(){
   int crazycount = 0;
   int alertleft = 0;
   int alertright = 0;
+  int smartbombs = 4;
 
   cbreak();
   halfdelay(1);
@@ -743,7 +749,23 @@ int main(){
     //process object motion
     player = process_motion(player, player);
     
-    for(int podloop = 0; podloop<podmax; podloop++){ pods[podloop] = process_motion(pods[podloop], player); };
+    for(int podloop = 0; podloop<podmax; podloop++){ 
+      pods[podloop] = process_motion(pods[podloop], player); 
+      //If lander dies, release pod
+      /*
+      if(pods[podloop].chase>0){  
+       for(int landerloop = 0; landerloop<landermax; landerloop++){ 
+         if(landers[landerloop].number==pods[podloop].chase){
+           if(landers[landerloop].active==0){
+             pods[podloop].vspeed = 1;
+             pods[podloop].vtime = 1;
+             pods[podloop].chase = 0;
+           };
+         };
+       };
+      };
+      */
+    };
 
     gatebeam1 = process_motion(gatebeam1, player);
     gatebeam2 = process_motion(gatebeam2, player);
@@ -765,6 +787,8 @@ int main(){
          landers[landerloop] = pod_chase(landers[landerloop], pods[landers[landerloop].chase]); 
        };
        if(landers[landerloop].chase>0&&landers[landerloop].phase==3){
+         pods[landers[landerloop].chase].speed = 0;
+         pods[landers[landerloop].chase].direction = 5;
          if(landers[landerloop].vtime<=10){
            landers[landerloop].vtime++;
          } else { 
@@ -783,7 +807,7 @@ int main(){
     };
     
     
-    for(int crazyloop = 0; crazyloop<landermax; crazyloop++){ 
+      for(int crazyloop = 0; crazyloop<landermax; crazyloop++){ 
       if(crazies[crazyloop].active==1){ 
        crazies[crazyloop] = crazy_motion(crazies[crazyloop], player);
        crazies[crazyloop] = process_motion(crazies[crazyloop], player);
@@ -862,7 +886,14 @@ int main(){
     };
     
     //pod state
-    mvprintw(21,1,"Out: %d In: %d", podcount, podsin);
+    mvprintw(21,1,"O:%d I:%d", podcount, podsin);
+
+    //smartbombs
+    int count = smartbombs;
+    for(int x=9;count>0;x++){
+      mvprintw(21,x,"B");
+      count--;
+    };
 
     //get the cursor out of the way
     mvprintw(23,79,"|");
@@ -933,7 +964,32 @@ int main(){
        };
       };
     };
-       
+      
+    //check for / process smartbomb
+    if(input=='a'&&smartbombs>=1){
+      smartbombs--;
+      for(int landerloop = 0; landerloop<landermax; landerloop++){
+       if(abs(player.y-landers[landerloop].y)<=40){
+         landers[landerloop] = object_out(landers[landerloop]);
+         score = score + 20;
+         //debug add pod drop once that works
+         for(int podloop = 0; podloop<podmax; podloop++){
+           if(pods[podloop].number==landers[landerloop].chase&&pods[podloop].active==1){
+             pods[podloop].vspeed = 1;
+             pods[podloop].vtime = 1;
+             pods[podloop].chase = 0;
+           };
+         };
+       };
+      };
+      for(int crazyloop = 0; crazyloop<landermax; crazyloop++){
+       if(abs(player.y-crazies[crazyloop].y)<=40){
+         crazies[crazyloop] = object_out(crazies[crazyloop]);
+         score = score + 20;
+       };
+      };
+    };
     //for each active bullet
     for(int bulletloop = 0; bulletloop<bulletmax; bulletloop++){ 
       if(bullets[bulletloop].active==1){ 
@@ -952,7 +1008,14 @@ int main(){
        for(int landerloop = 0; landerloop<landermax; landerloop++){
          if(landers[landerloop].active==1){
            if(check_collision(bullets[bulletloop], landers[landerloop])==1){
-             //kill lander and bullet
+             //kill lander and bullet, release pod
+             for(int podloop = 0; podloop<podmax; podloop++){
+               if(pods[podloop].number==landers[landerloop].chase&&pods[podloop].active==1){
+                 pods[podloop].vspeed = 1;
+                 pods[podloop].vtime = 1;
+                 pods[podloop].chase = 0;
+               };
+             };
              landers[landerloop] = object_out(landers[landerloop]);
              bullets[bulletloop].vtime = 100;
              bullets[bulletloop] = age_bullet(bullets[bulletloop]);