Cleaned up pod rescue logic.
authorlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Fri, 26 Jan 2007 13:35:24 +0000 (13:35 +0000)
committerlimb <limb@bc5cbbab-a4ec-0310-bb52-ff3d296db539>
Fri, 26 Jan 2007 13:35:24 +0000 (13:35 +0000)
git-svn-id: svn+ssh://svn/var/repos/curfender@618 bc5cbbab-a4ec-0310-bb52-ff3d296db539

main.cpp

index d9a0eea..d291865 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -130,7 +130,7 @@ game_object object_out(game_object object){
   object.y = -1;
   object.speed = 0;
   object.direction = 0;
-  object.chase = 0;
+  object.chase = -1;
   object.phase = 0;
   return object;
 }
@@ -472,14 +472,14 @@ game_object player_init(game_object player){
 game_object pod_chase(game_object lander, game_object pod){
   
   if(pod.active==0){
-    lander.chase=0;
+    lander.chase=-1;
     lander.phase=0;
     lander.speed=1;
     //strcpy(lander.radar, "*"); //debug
   } else {
     
     //match y, then direction and speed
-    if(lander.chase>0&&lander.phase==1){
+    if(lander.chase>=0&&lander.phase==1){
       if(abs(lander.y-pod.y)<3){
        lander.speed = 2;
       };
@@ -490,7 +490,7 @@ game_object pod_chase(game_object lander, game_object pod){
       };
     };
     
-    if(lander.chase>0&&lander.phase==2){
+    if(lander.chase>=0&&lander.phase==2){
       //decend to pod's x-1
       if(lander.x<=pod.x-1){
        lander.x++;
@@ -503,7 +503,7 @@ game_object pod_chase(game_object lander, game_object pod){
       };
     };
     
-    if(lander.chase>0&&lander.phase==3){
+    if(lander.chase>=0&&lander.phase==3){
       //ascend at speed 1 keep pod at x+1
       if(lander.vtime==0){
        lander.x--;
@@ -635,17 +635,23 @@ int main(){
     strcpy (pods[podloop].line3, " + ");
     strcpy (pods[podloop].radar, "x");
 
-    pods[podloop].chase = 0;
+    pods[podloop].chase = -1;
   };
 
   for(int podloop = 1; podloop<podmax+1; podloop=podloop+2){ 
+    if(rand()%1000>=500){
+      pods[podloop].direction = 4;
+    } else {
+      pods[podloop].direction = 6;
+    };
+    
     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;
+    pods[podloop].chase = -1;
   };
 
   //bullets
@@ -676,6 +682,8 @@ int main(){
       landers[landerloop].direction = 6;
     };
 
+    landers[landerloop].chase = -1;
+
     strcpy (landers[landerloop].line0, "{=}");
     strcpy (landers[landerloop].radar, "*");
   };
@@ -752,18 +760,23 @@ int main(){
     for(int podloop = 0; podloop<podmax; podloop++){ 
       pods[podloop] = process_motion(pods[podloop], player); 
       //If lander dies, release pod
-      if(pods[podloop].chase>0){  
+      if(pods[podloop].chase>=0){  
        for(int landerloop = 0; landerloop<landermax; landerloop++){ 
          if(landerloop==pods[podloop].chase){
            if(landers[landerloop].active==0){
              pods[podloop].vspeed = 2;
              pods[podloop].vtime = 1;
-             pods[podloop].chase = 0;
+             pods[podloop].chase = -1;
+             pods[podloop].speed = 1;
+             if(rand()%1000>=500){
+               pods[podloop].direction = 4;
+             } else {
+               pods[podloop].direction = 6;
+             };
            };
          };
        };
       };
-    
     };
 
     gatebeam1 = process_motion(gatebeam1, player);
@@ -779,13 +792,13 @@ int main(){
 
     for(int landerloop = 0; landerloop<landermax; landerloop++){ 
       if(landers[landerloop].active==1){ 
-       if(landers[landerloop].chase>0&&landers[landerloop].phase==1){
+       if(landers[landerloop].chase>=0&&landers[landerloop].phase==1){
          landers[landerloop] = pod_chase(landers[landerloop], pods[landers[landerloop].chase]); 
        };
-       if(landers[landerloop].chase>0&&landers[landerloop].phase==2){
+       if(landers[landerloop].chase>=0&&landers[landerloop].phase==2){
          landers[landerloop] = pod_chase(landers[landerloop], pods[landers[landerloop].chase]); 
        };
-       if(landers[landerloop].chase>0&&landers[landerloop].phase==3){
+       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){
@@ -796,7 +809,7 @@ int main(){
          };
          landers[landerloop] = pod_chase(landers[landerloop], pods[landers[landerloop].chase]); 
        };
-       if(landers[landerloop].chase>0&&landers[landerloop].phase==4){ //decode which pod to kill
+       if(landers[landerloop].chase>=0&&landers[landerloop].phase==4){ //decode which pod to kill
          pods[landers[landerloop].chase] = object_out(pods[landers[landerloop].chase]);
          crazies[landerloop] = encrazify(landers[landerloop], crazies[landerloop]);
          landers[landerloop] = object_out(landers[landerloop]);
@@ -922,6 +935,14 @@ int main(){
     for(int podloop = 0; podloop<podmax; podloop++){ 
       if((pod_in==0)&&(pods[podloop].active==1)&&(check_collision(pods[podloop], player)==1)){
        pod_in = pods[podloop].number;
+       pods[podloop].chase = -1;
+       //stop the chase if we steal the pod
+       for(int landerloop = 0; landerloop<landermax; landerloop++){
+         if(landers[landerloop].chase==podloop){ 
+           landers[landerloop].chase = -1; 
+           landers[landerloop].phase = 0; 
+         };
+       };
       };
     };
     
@@ -1174,12 +1195,12 @@ int main(){
     //steps:
     //decide to grab a pod
     for(int landerloop = 0; landerloop<landermax; landerloop++){
-      if(landers[landerloop].active==1&&landers[landerloop].chase==0){
+      if(landers[landerloop].active==1&&landers[landerloop].chase==-1){
        //if(rand()%10000<=10){
        if(rand()%1000<=10){
          //choose the closest pod
          for(int podloop = 0; podloop<podmax; podloop++){
-           if(landers[landerloop].chase==0&&pods[podloop].chase==0&&pods[podloop].active==1){
+           if(landers[landerloop].chase==-1&&pods[podloop].chase==-1&&pods[podloop].active==1){
              landers[landerloop].chase = podloop;
              pods[podloop].chase = landerloop;
            };