rocksndiamonds-1.2.0
[rocksndiamonds.git] / src / tape.c
index 9e8e39bc891acd6df9d205afa9844ca8251cabd6..2cc0b39962eba632c9606af412956264e3a64f64 100644 (file)
@@ -20,6 +20,7 @@ void TapeStartRecording()
 {
   time_t zeit1 = time(NULL);
   struct tm *zeit2 = localtime(&zeit1);
+  int i;
 
   if (!TAPE_IS_STOPPED(tape))
     TapeStop();
@@ -35,6 +36,9 @@ void TapeStartRecording()
   tape.date = 10000*(zeit2->tm_year%100) + 100*zeit2->tm_mon + zeit2->tm_mday;
   tape.random_seed = InitRND(NEW_RANDOMIZE);
 
+  for(i=0; i<MAX_PLAYERS; i++)
+    tape.player_participates[i] = FALSE;
+
   DrawVideoDisplay(VIDEO_STATE_REC_ON, 0);
   DrawVideoDisplay(VIDEO_STATE_DATE_ON, tape.date);
   DrawVideoDisplay(VIDEO_STATE_TIME_ON, 0);
@@ -113,7 +117,7 @@ void TapeTogglePause()
   tape.pause_before_death = FALSE;
   DrawVideoDisplay((tape.pausing ?
                    VIDEO_STATE_PAUSE_ON :
-                   VIDEO_STATE_PAUSE_OFF),
+                   VIDEO_STATE_PAUSE_OFF) | VIDEO_STATE_PBEND_OFF,
                   0);
 }
 
@@ -170,11 +174,14 @@ byte *TapePlayAction()
 
     for(i=0; i<MAX_PLAYERS; i++)
       joy[i] = tape.pos[tape.counter-1].action[i];
-
-    return(joy);
+  }
+  else
+  {
+    for(i=0; i<MAX_PLAYERS; i++)
+      joy[i] = 0;
   }
 
-  return(NULL);
+  return(joy);
 }
 
 boolean TapePlayDelay()
@@ -184,12 +191,12 @@ boolean TapePlayDelay()
 
   if (tape.pause_before_death) /* STOP 10s BEFORE PLAYER GETS KILLED... */
   {
-    if (!(FrameCounter % 5))
+    if (!(FrameCounter % 20))
     {
-      if (2*(FrameCounter/10) == FrameCounter/5)
-       DrawVideoDisplay(VIDEO_STATE_PAUSE_ON, VIDEO_DISPLAY_LABEL_ONLY);
+      if ((FrameCounter / 20) % 2)
+       DrawVideoDisplay(VIDEO_STATE_PBEND_ON, VIDEO_DISPLAY_LABEL_ONLY);
       else
-       DrawVideoDisplay(VIDEO_STATE_PAUSE_OFF, VIDEO_DISPLAY_LABEL_ONLY);
+       DrawVideoDisplay(VIDEO_STATE_PBEND_OFF, VIDEO_DISPLAY_LABEL_ONLY);
     }
 
     if (level.time-TimeLeft > tape.length_seconds - PAUSE_SECONDS_BEFORE_DEATH)