rnd-20020314-3-src
authorHolger Schemel <info@artsoft.org>
Thu, 14 Mar 2002 14:40:46 +0000 (15:40 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:36:10 +0000 (10:36 +0200)
src/events.c
src/files.c
src/files.h
src/game.c

index 365d79621582c8f9895e69d5842c964e29d4d13a..79ffdd4ad02613fb5bf65e609be6ed563b87405b 100644 (file)
@@ -19,6 +19,7 @@
 #include "tools.h"
 #include "game.h"
 #include "editor.h"
+#include "files.h"
 #include "tape.h"
 #include "joystick.h"
 #include "network.h"
@@ -565,6 +566,12 @@ void HandleKey(Key key, int key_status)
             HandleChooseLevel(0,0, 0,SCR_FIELDY, MB_MENU_MARK);
          break;
 
+#ifdef DEBUG
+        case KSYM_t:
+         DumpTape(&tape);
+         break;
+#endif
+
        default:
          break;
       }
index 773b0e720c43907813f10867665f686a57406765..3f50b5e9da42d312637589df1fd4dd84a5f8065c 100644 (file)
@@ -1312,6 +1312,14 @@ static void setTapeInfoToDefaults()
 
   /* at least one (default: the first) player participates in every tape */
   tape.num_participating_players = 1;
+
+  tape.level_nr = level_nr;
+  tape.counter = 0;
+  tape.changed = FALSE;
+
+  tape.recording = FALSE;
+  tape.playing = FALSE;
+  tape.pausing = FALSE;
 }
 
 void OLD_LoadTape(int level_nr)
@@ -1553,14 +1561,6 @@ static int LoadTape_HEAD(struct TapeInfo *tape, FILE *file, int chunk_size)
     }
   }
 
-  tape->level_nr = level_nr;
-  tape->counter = 0;
-  tape->changed = FALSE;
-
-  tape->recording = FALSE;
-  tape->playing = FALSE;
-  tape->pausing = FALSE;
-
   return chunk_size;
 }
 
@@ -1576,10 +1576,6 @@ static int LoadTape_BODY(struct TapeInfo *tape, FILE *file, int chunk_size)
     return chunk_size_expected;
   }
 
-#if DEBUG
-  printf("\nTAPE OF LEVEL %d\n", level_nr);
-#endif
-
   for(i=0; i<tape->length; i++)
   {
     if (i >= MAX_TAPELEN)
@@ -1591,30 +1587,10 @@ static int LoadTape_BODY(struct TapeInfo *tape, FILE *file, int chunk_size)
 
       if (tape->player_participates[j])
        tape->pos[i].action[j] = fgetc(file);
-
-#if DEBUG
-      {
-       int x = tape->pos[i].action[j];
-
-       printf("%d:%02x ", j, x);
-       printf("[%c%c%c%c|%c%c] - ",
-              (x & JOY_LEFT ? '<' : ' '),
-              (x & JOY_RIGHT ? '>' : ' '),
-              (x & JOY_UP ? '^' : ' '),
-              (x & JOY_DOWN ? 'v' : ' '),
-              (x & JOY_BUTTON_1 ? '1' : ' '),
-              (x & JOY_BUTTON_2 ? '2' : ' '));
-      }
-#endif
-
     }
 
     tape->pos[i].delay = fgetc(file);
 
-#if DEBUG
-    printf("[%03d]\n", tape->pos[i].delay);
-#endif
-
     if (tape->file_version == FILE_VERSION_1_0)
     {
       /* eliminate possible diagonal moves in old tapes */
@@ -1929,6 +1905,49 @@ void SaveTape(int level_nr)
     Request("tape saved !", REQ_CONFIRM);
 }
 
+void DumpTape(struct TapeInfo *tape)
+{
+  int i, j;
+
+  if (TAPE_IS_EMPTY(*tape))
+  {
+    Error(ERR_WARN, "no tape available for level %d", tape->level_nr);
+    return;
+  }
+
+  printf("\n");
+  printf("-------------------------------------------------------------------------------\n");
+  printf("TAPE OF LEVEL %d\n", tape->level_nr);
+  printf("-------------------------------------------------------------------------------\n");
+
+  for(i=0; i<tape->length; i++)
+  {
+    if (i >= MAX_TAPELEN)
+      break;
+
+    for(j=0; j<MAX_PLAYERS; j++)
+    {
+      if (tape->player_participates[j])
+      {
+       int action = tape->pos[i].action[j];
+
+       printf("%d:%02x ", j, action);
+       printf("[%c%c%c%c|%c%c] - ",
+              (action & JOY_LEFT ? '<' : ' '),
+              (action & JOY_RIGHT ? '>' : ' '),
+              (action & JOY_UP ? '^' : ' '),
+              (action & JOY_DOWN ? 'v' : ' '),
+              (action & JOY_BUTTON_1 ? '1' : ' '),
+              (action & JOY_BUTTON_2 ? '2' : ' '));
+      }
+    }
+
+    printf("(%03d)\n", tape->pos[i].delay);
+  }
+
+  printf("-------------------------------------------------------------------------------\n");
+}
+
 void LoadScore(int level_nr)
 {
   int i;
index 530006681fbe023e379fbbe880bf91c19adebdc4..bd593b5a8d5db3a349550cede2d9db8a9ab96eee 100644 (file)
@@ -21,6 +21,7 @@ void SaveLevel(int);
 
 void LoadTape(int);
 void SaveTape(int);
+void DumpTape(struct TapeInfo *);
 
 void LoadScore(int);
 void SaveScore(int);
index 50ffaf1662b441fa85bc712a0b9be8239e35326e..423fc4c85fb5785071da7f2be6b80fe97afedeaf 100644 (file)
@@ -942,12 +942,12 @@ void GameWon()
 
   if (TimeLeft)
   {
-    if (setup.sound_loops)
+    if (!tape.playing && setup.sound_loops)
       PlaySoundExt(SND_SIRR, PSND_MAX_VOLUME, PSND_MAX_RIGHT, PSND_LOOP);
 
     while(TimeLeft > 0)
     {
-      if (!setup.sound_loops)
+      if (!tape.playing && !setup.sound_loops)
        PlaySoundStereo(SND_SIRR, PSND_MAX_RIGHT);
       if (TimeLeft > 0 && !(TimeLeft % 10))
        RaiseScore(level.score[SC_ZEITBONUS]);
@@ -957,20 +957,22 @@ void GameWon()
        TimeLeft--;
       DrawText(DX_TIME, DY_TIME, int2str(TimeLeft, 3), FS_SMALL, FC_YELLOW);
       BackToFront();
-      Delay(10);
+
+      if (!tape.playing)
+       Delay(10);
     }
 
-    if (setup.sound_loops)
+    if (!tape.playing && setup.sound_loops)
       StopSound(SND_SIRR);
   }
   else if (level.time == 0)            /* level without time limit */
   {
-    if (setup.sound_loops)
+    if (!tape.playing && setup.sound_loops)
       PlaySoundExt(SND_SIRR, PSND_MAX_VOLUME, PSND_MAX_RIGHT, PSND_LOOP);
 
     while(TimePlayed < 999)
     {
-      if (!setup.sound_loops)
+      if (!tape.playing && !setup.sound_loops)
        PlaySoundStereo(SND_SIRR, PSND_MAX_RIGHT);
       if (TimePlayed < 999 && !(TimePlayed % 10))
        RaiseScore(level.score[SC_ZEITBONUS]);
@@ -980,10 +982,12 @@ void GameWon()
        TimePlayed++;
       DrawText(DX_TIME, DY_TIME, int2str(TimePlayed, 3), FS_SMALL, FC_YELLOW);
       BackToFront();
-      Delay(10);
+
+      if (!tape.playing)
+       Delay(10);
     }
 
-    if (setup.sound_loops)
+    if (!tape.playing && setup.sound_loops)
       StopSound(SND_SIRR);
   }
 
@@ -4207,7 +4211,9 @@ static void PlayerActions(struct PlayerInfo *player, byte player_action)
 {
   static byte stored_player_action[MAX_PLAYERS];
   static int num_stored_actions = 0;
+#if 0
   static boolean save_tape_entry = FALSE;
+#endif
   boolean moved = FALSE, snapped = FALSE, bombed = FALSE;
   int left     = player_action & JOY_LEFT;
   int right    = player_action & JOY_RIGHT;
@@ -4247,9 +4253,7 @@ static void PlayerActions(struct PlayerInfo *player, byte player_action)
        player_action &= JOY_BUTTON;
 
       stored_player_action[player->index_nr] = player_action;
-#if 1
       save_tape_entry = TRUE;
-#endif
     }
     else if (tape.playing && snapped)
       SnapField(player, 0, 0);                 /* stop snapping */