rnd-20020331-1-src
authorHolger Schemel <info@artsoft.org>
Sun, 31 Mar 2002 02:00:13 +0000 (04:00 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:36:38 +0000 (10:36 +0200)
src/events.c
src/game.c
src/libgame/system.c
src/libgame/system.h
src/main.h
src/screens.c
src/tape.c
src/tape.h
src/tools.c
src/tools.h

index ccab40eedbbd44190ca7d1e7d776238cb5a161b3..4bf6da2d2ece4046f314267a48ae0d589eadee8a 100644 (file)
@@ -222,38 +222,7 @@ void SleepWhileUnmapped()
 void HandleExposeEvent(ExposeEvent *event)
 {
 #ifndef TARGET_SDL
-  int x = event->x, y = event->y;
-  int width = event->width, height = event->height;
-
-  if (setup.direct_draw && game_status==PLAYING)
-  {
-    int xx,yy;
-    int x1 = (x-SX)/TILEX, y1 = (y-SY)/TILEY;
-    int x2 = (x-SX+width)/TILEX, y2 = (y-SY+height)/TILEY;
-
-    SetDrawtoField(DRAW_BACKBUFFER);
-
-    for(xx=0; xx<SCR_FIELDX; xx++)
-      for(yy=0; yy<SCR_FIELDY; yy++)
-       if (xx>=x1 && xx<=x2 && yy>=y1 && yy<=y2)
-         DrawScreenField(xx,yy);
-    DrawAllPlayers();
-
-    SetDrawtoField(DRAW_DIRECT);
-  }
-
-  if (setup.soft_scrolling && game_status == PLAYING)
-  {
-    int fx = FX, fy = FY;
-
-    fx += (ScreenMovDir & (MV_LEFT|MV_RIGHT) ? ScreenGfxPos : 0);
-    fy += (ScreenMovDir & (MV_UP|MV_DOWN)    ? ScreenGfxPos : 0);
-
-    BlitBitmap(fieldbuffer, backbuffer, fx,fy, SXSIZE,SYSIZE, SX,SY);
-  }
-
-  BlitBitmap(drawto, window, x,y, width,height, x,y);
-
+  RedrawPlayfield(FALSE, event->x, event->y, event->width, event->height);
   FlushDisplay();
 #endif
 }
index c0d43b8bf432636e9960977340fedff96188d52f..c8fadba494444107343f66cedc6b28b76b440a6c 100644 (file)
@@ -802,6 +802,7 @@ void InitGame()
           int2str(TimeLeft, 3), FS_SMALL, FC_YELLOW);
 
   UnmapGameButtons();
+  UnmapTapeButtons();
   game_gadget[SOUND_CTRL_ID_MUSIC]->checked = setup.sound_music;
   game_gadget[SOUND_CTRL_ID_LOOPS]->checked = setup.sound_loops;
   game_gadget[SOUND_CTRL_ID_SIMPLE]->checked = setup.sound_simple;
@@ -4379,6 +4380,9 @@ void GameActions()
   action_delay_value =
     (tape.playing && tape.fast_forward ? FfwdFrameDelay : GameFrameDelay);
 
+  if (tape.playing && tape.index_search)
+    action_delay_value = 0;
+
   /* ---------- main game synchronization point ---------- */
 
   WaitUntilDelayReached(&action_delay, action_delay_value);
@@ -4413,11 +4417,6 @@ void GameActions()
   if (tape.pausing)
     return;
 
-  if (tape.playing)
-    TapePlayDelay();
-  else if (tape.recording)
-    TapeRecordDelay();
-
   recorded_player_action = (tape.playing ? TapePlayAction() : NULL);
 
   for (i=0; i<MAX_PLAYERS; i++)
@@ -4972,7 +4971,7 @@ boolean MoveFigure(struct PlayerInfo *player, int dx, int dy)
     return FALSE;
 #else
   if (!FrameReached(&player->move_delay, player->move_delay_value) &&
-      !(tape.playing && tape.file_version < FILE_VERSION_2_0))
+      !(tape.playing && tape.game_version < FILE_VERSION_2_0))
     return FALSE;
 #endif
 
@@ -5830,7 +5829,7 @@ int DigField(struct PlayerInfo *player,
        return MF_NO_ACTION;
 #else
       if (!FrameReached(&player->push_delay, player->push_delay_value) &&
-         !(tape.playing && tape.file_version < FILE_VERSION_2_0) &&
+         !(tape.playing && tape.game_version < FILE_VERSION_2_0) &&
          element != EL_SPRING)
        return MF_NO_ACTION;
 #endif
@@ -6072,7 +6071,7 @@ int DigField(struct PlayerInfo *player,
        return MF_NO_ACTION;
 #else
       if (!FrameReached(&player->push_delay, player->push_delay_value) &&
-         !(tape.playing && tape.file_version < FILE_VERSION_2_0) &&
+         !(tape.playing && tape.game_version < FILE_VERSION_2_0) &&
          element != EL_BALLOON)
        return MF_NO_ACTION;
 #endif
index f5125c611a14e5f21b600873ddef0cec3024bd0e..497f7e0b26741e90efd50e7b90996960a0804757 100644 (file)
@@ -157,6 +157,8 @@ void InitGfxFieldInfo(int sx, int sy, int sxsize, int sysize,
   gfx.real_sy = real_sy;
   gfx.full_sxsize = full_sxsize;
   gfx.full_sysize = full_sysize;
+
+  SetDrawDeactivationMask(REDRAW_NONE);                /* do not deactivate drawing */
 }
 
 void InitGfxDoor1Info(int dx, int dy, int dxsize, int dysize)
@@ -182,6 +184,11 @@ void InitGfxScrollbufferInfo(int scrollbuffer_width, int scrollbuffer_height)
   gfx.scrollbuffer_height = scrollbuffer_height;
 }
 
+void SetDrawDeactivationMask(int draw_deactivation_mask)
+{
+  gfx.draw_deactivation_mask = draw_deactivation_mask;
+}
+
 
 /* ========================================================================= */
 /* video functions                                                           */
@@ -318,11 +325,26 @@ inline void CloseWindow(DrawWindow *window)
 #endif
 }
 
+inline boolean DrawingDeactivated(int x, int y, int width, int height)
+{
+  if (gfx.draw_deactivation_mask != REDRAW_NONE)
+  {
+    if ((gfx.draw_deactivation_mask & REDRAW_FIELD) &&
+       x < gfx.sx + gfx.sxsize)
+      return TRUE;
+  }
+
+  return FALSE;
+}
+
 inline void BlitBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap,
                       int src_x, int src_y,
                       int width, int height,
                       int dst_x, int dst_y)
 {
+  if (DrawingDeactivated(dst_x, dst_y, width, height))
+    return;
+
 #ifdef TARGET_SDL
   SDLCopyArea(src_bitmap, dst_bitmap,
              src_x, src_y, width, height, dst_x, dst_y, SDLCOPYAREA_OPAQUE);
@@ -334,6 +356,9 @@ inline void BlitBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap,
 
 inline void ClearRectangle(Bitmap *bitmap, int x, int y, int width, int height)
 {
+  if (DrawingDeactivated(x, y, width, height))
+    return;
+
 #ifdef TARGET_SDL
   SDLFillRectangle(bitmap, x, y, width, height, 0x000000);
 #else
@@ -380,6 +405,9 @@ inline void BlitBitmapMasked(Bitmap *src_bitmap, Bitmap *dst_bitmap,
                             int width, int height,
                             int dst_x, int dst_y)
 {
+  if (DrawingDeactivated(dst_x, dst_y, width, height))
+    return;
+
 #ifdef TARGET_SDL
   SDLCopyArea(src_bitmap, dst_bitmap,
              src_x, src_y, width, height, dst_x, dst_y, SDLCOPYAREA_MASKED);
index c0fb030b671f4412eb5adf2ee739ed514000b606..1416f231739ebf3fa9aad5f505f654b3d868dc3a 100644 (file)
@@ -238,6 +238,8 @@ struct GfxInfo
 
   int vx, vy;
   int vxsize, vysize;
+
+  boolean draw_deactivation_mask;
 };
 
 struct ArtworkInfo
@@ -384,6 +386,7 @@ void InitGfxFieldInfo(int, int, int, int, int, int, int, int);
 void InitGfxDoor1Info(int, int, int, int);
 void InitGfxDoor2Info(int, int, int, int);
 void InitGfxScrollbufferInfo(int, int);
+void SetDrawDeactivationMask(int );
 
 inline void InitVideoDisplay(void);
 inline void CloseVideoDisplay(void);
index eb67ec1f7c4ba8f8b4596e8a5795f331d3912d8d..c2c9346cc3ce9135726dc1b2f34ee692be97e9ef 100644 (file)
@@ -302,6 +302,7 @@ struct TapeInfo
   boolean pause_before_death;
   boolean recording, playing, pausing;
   boolean fast_forward;
+  boolean index_search;
   boolean changed;
   boolean player_participates[MAX_PLAYERS];
   int num_participating_players;
index 0f313c856d73405485b5417b9b9c4ecccc14accb..b9b7c5dde86630c7858ad9338821c368b830fa09 100644 (file)
@@ -125,6 +125,7 @@ void DrawMainMenu()
   FadeSounds();
   KeyboardAutoRepeatOn();
   ActivateJoystickIfAvailable();
+  SetDrawDeactivationMask(REDRAW_NONE);
 
   /* needed if last screen was the playing screen, invoked from level editor */
   if (level_editor_test_game)
index 44bbc57bcbe440274f30575c61e5f462207c19ce..efa9515672dd23f995194f1ab2682c5686604201 100644 (file)
 
 /* tape button identifiers */
 #define TAPE_CTRL_ID_EJECT             0
-#define TAPE_CTRL_ID_STOP              1
-#define TAPE_CTRL_ID_PAUSE             2
-#define TAPE_CTRL_ID_RECORD            3
-#define TAPE_CTRL_ID_PLAY              4
+#define TAPE_CTRL_ID_INDEX             1
+#define TAPE_CTRL_ID_STOP              2
+#define TAPE_CTRL_ID_PAUSE             3
+#define TAPE_CTRL_ID_RECORD            4
+#define TAPE_CTRL_ID_PLAY              5
 
-#define NUM_TAPE_BUTTONS               5
+#define NUM_TAPE_BUTTONS               6
 
 /* forward declaration for internal use */
 static void HandleTapeButtons(struct GadgetInfo *);
@@ -305,6 +306,7 @@ void TapeStartRecording()
   tape.changed = TRUE;
   tape.date = 10000*(zeit2->tm_year%100) + 100*zeit2->tm_mon + zeit2->tm_mday;
   tape.random_seed = InitRND(NEW_RANDOMIZE);
+  tape.game_version = GAME_VERSION_ACTUAL;
 
   for(i=0; i<MAX_PLAYERS; i++)
     tape.player_participates[i] = FALSE;
@@ -312,53 +314,24 @@ void TapeStartRecording()
   DrawVideoDisplay(VIDEO_STATE_REC_ON, 0);
   DrawVideoDisplay(VIDEO_STATE_DATE_ON, tape.date);
   DrawVideoDisplay(VIDEO_STATE_TIME_ON, 0);
+  MapTapeIndexButton();
 }
 
 void TapeStopRecording()
 {
-#if 0
-  int i;
-#endif
-
   if (!tape.recording)
     return;
 
-#if 0
-  for(i=0; i<MAX_PLAYERS; i++)
-    tape.pos[tape.counter].action[i] = 0;
-#endif
-
   tape.counter++;
   tape.length = tape.counter;
   tape.length_seconds = GetTapeLength();
   tape.recording = FALSE;
   tape.pausing = FALSE;
-  DrawVideoDisplay(VIDEO_STATE_REC_OFF, 0);
-}
-
-#if 0
-void TapeRecordAction(byte joy[MAX_PLAYERS])
-{
-  int i;
-
-  if (!tape.recording || tape.pausing)
-    return;
-
-  if (tape.counter >= MAX_TAPELEN-1)
-  {
-    TapeStopRecording();
-    return;
-  }
 
-  for(i=0; i<MAX_PLAYERS; i++)
-    tape.pos[tape.counter].action[i] = joy[i];
-
-  tape.counter++;
-  tape.pos[tape.counter].delay = 0;
+  DrawVideoDisplay(VIDEO_STATE_REC_OFF, 0);
+  MapTapeEjectButton();
 }
 
-#else
-
 void TapeRecordAction(byte action[MAX_PLAYERS])
 {
   int i;
@@ -397,40 +370,6 @@ void TapeRecordAction(byte action[MAX_PLAYERS])
     tape.pos[tape.counter].delay++;
   }
 }
-#endif
-
-#if 0
-void TapeRecordDelay()
-{
-  int i;
-
-  if (!tape.recording || tape.pausing)
-    return;
-
-  if (tape.counter >= MAX_TAPELEN)
-  {
-    TapeStopRecording();
-    return;
-  }
-
-  tape.pos[tape.counter].delay++;
-
-  if (tape.pos[tape.counter].delay >= 255)
-  {
-    for(i=0; i<MAX_PLAYERS; i++)
-      tape.pos[tape.counter].action[i] = 0;
-
-    tape.counter++;
-    tape.pos[tape.counter].delay = 0;
-  }
-}
-
-#else
-
-void TapeRecordDelay()
-{
-}
-#endif
 
 void TapeTogglePause()
 {
@@ -448,6 +387,12 @@ void TapeTogglePause()
     state |= VIDEO_STATE_PBEND_OFF;
 
   DrawVideoDisplay(state, 0);
+
+  if (tape.index_search)
+  {
+    SetDrawDeactivationMask(REDRAW_NONE);
+    RedrawPlayfield(TRUE, 0,0,0,0);
+  }
 }
 
 void TapeStartPlaying()
@@ -465,11 +410,14 @@ void TapeStartPlaying()
   tape.playing = TRUE;
   tape.pausing = FALSE;
   tape.fast_forward = FALSE;
+  tape.index_search = FALSE;
+
   InitRND(tape.random_seed);
 
   DrawVideoDisplay(VIDEO_STATE_PLAY_ON, 0);
   DrawVideoDisplay(VIDEO_STATE_DATE_ON, tape.date);
   DrawVideoDisplay(VIDEO_STATE_TIME_ON, 0);
+  MapTapeIndexButton();
 }
 
 void TapeStopPlaying()
@@ -479,43 +427,11 @@ void TapeStopPlaying()
 
   tape.playing = FALSE;
   tape.pausing = FALSE;
-  DrawVideoDisplay(VIDEO_STATE_PLAY_OFF, 0);
-}
-
-#if 0
-byte *TapePlayAction()
-{
-  static byte joy[MAX_PLAYERS];
-  int i;
-
-  if (!tape.playing || tape.pausing)
-    return(NULL);
 
-  if (tape.counter >= tape.length)
-  {
-    TapeStop();
-    return(NULL);
-  }
-
-  if (tape.delay_played == tape.pos[tape.counter].delay)
-  {
-    tape.delay_played = 0;
-    tape.counter++;
-
-    for(i=0; i<MAX_PLAYERS; i++)
-      joy[i] = tape.pos[tape.counter-1].action[i];
-  }
-  else
-  {
-    for(i=0; i<MAX_PLAYERS; i++)
-      joy[i] = 0;
-  }
-
-  return(joy);
+  DrawVideoDisplay(VIDEO_STATE_PLAY_OFF, 0);
+  MapTapeEjectButton();
 }
 
-#else
-
 byte *TapePlayAction()
 {
   static byte action[MAX_PLAYERS];
@@ -541,6 +457,20 @@ byte *TapePlayAction()
     }
   }
 
+  if (tape.index_search)
+  {
+    if (tape.counter >= tape.length)
+    {
+      tape.index_search = FALSE;
+
+      SetDrawDeactivationMask(REDRAW_NONE);
+      RedrawPlayfield(TRUE, 0,0,0,0);
+
+      TapeTogglePause();
+      return NULL;
+    }
+  }
+
   if (tape.counter >= tape.length)
   {
     TapeStop();
@@ -559,53 +489,6 @@ byte *TapePlayAction()
 
   return action;
 }
-#endif
-
-#if 0
-boolean TapePlayDelay()
-{
-  if (!tape.playing || tape.pausing)
-    return(FALSE);
-
-  if (tape.pause_before_death) /* STOP 10s BEFORE PLAYER GETS KILLED... */
-  {
-    if (!(FrameCounter % 20))
-    {
-      if ((FrameCounter / 20) % 2)
-       DrawVideoDisplay(VIDEO_STATE_PBEND_ON, VIDEO_DISPLAY_LABEL_ONLY);
-      else
-       DrawVideoDisplay(VIDEO_STATE_PBEND_OFF, VIDEO_DISPLAY_LABEL_ONLY);
-    }
-
-    if (TimePlayed > tape.length_seconds - TAPE_PAUSE_SECONDS_BEFORE_DEATH)
-    {
-      TapeTogglePause();
-      return(FALSE);
-    }
-  }
-
-  if (tape.counter >= tape.length)
-  {
-    TapeStop();
-    return(TRUE);
-  }
-
-  if (tape.delay_played < tape.pos[tape.counter].delay)
-  {
-    tape.delay_played++;
-    return(TRUE);
-  }
-  else
-    return(FALSE);
-}
-
-#else
-
-boolean TapePlayDelay()
-{
-  return TRUE|FALSE;   /* ...it doesn't matter at all */
-}
-#endif
 
 void TapeStop()
 {
@@ -648,6 +531,7 @@ unsigned int GetTapeLength()
 #define TAPE_BUTTON_YPOS       77
 
 #define TAPE_BUTTON_EJECT_XPOS (TAPE_BUTTON_XPOS + 0 * TAPE_BUTTON_XSIZE)
+#define TAPE_BUTTON_INDEX_XPOS (TAPE_BUTTON_XPOS + 0 * TAPE_BUTTON_XSIZE)
 #define TAPE_BUTTON_STOP_XPOS  (TAPE_BUTTON_XPOS + 1 * TAPE_BUTTON_XSIZE)
 #define TAPE_BUTTON_PAUSE_XPOS (TAPE_BUTTON_XPOS + 2 * TAPE_BUTTON_XSIZE)
 #define TAPE_BUTTON_RECORD_XPOS        (TAPE_BUTTON_XPOS + 3 * TAPE_BUTTON_XSIZE)
@@ -665,6 +549,11 @@ static struct
     TAPE_CTRL_ID_EJECT,
     "eject tape"
   },
+  {
+    TAPE_BUTTON_INDEX_XPOS,    TAPE_BUTTON_YPOS,
+    TAPE_CTRL_ID_INDEX,
+    "index mark"
+  },
   {
     TAPE_BUTTON_STOP_XPOS,     TAPE_BUTTON_YPOS,
     TAPE_CTRL_ID_STOP,
@@ -705,6 +594,12 @@ void CreateTapeButtons()
     gd_x2 = DOOR_GFX_PAGEX3 + gd_xoffset;
     gd_y  = DOOR_GFX_PAGEY2 + gd_yoffset;
 
+    if (i == TAPE_CTRL_ID_INDEX)
+    {
+      gd_x1 = DOOR_GFX_PAGEX6 + gd_xoffset;
+      gd_x2 = DOOR_GFX_PAGEX5 + gd_xoffset;
+    }
+
     gi = CreateGadget(GDI_CUSTOM_ID, id,
                      GDI_INFO_TEXT, tapebutton_info[i].infotext,
                      GDI_X, VX + gd_xoffset,
@@ -726,12 +621,28 @@ void CreateTapeButtons()
   }
 }
 
+void MapTapeEjectButton()
+{
+  UnmapGadget(tape_gadget[TAPE_CTRL_ID_INDEX]);
+  MapGadget(tape_gadget[TAPE_CTRL_ID_EJECT]);
+}
+
+void MapTapeIndexButton()
+{
+  UnmapGadget(tape_gadget[TAPE_CTRL_ID_EJECT]);
+  MapGadget(tape_gadget[TAPE_CTRL_ID_INDEX]);
+}
+
 void MapTapeButtons()
 {
   int i;
 
   for (i=0; i<NUM_TAPE_BUTTONS; i++)
-    MapGadget(tape_gadget[i]);
+    if (i != TAPE_CTRL_ID_INDEX)
+      MapGadget(tape_gadget[i]);
+
+  if (tape.recording || tape.playing)
+    MapTapeIndexButton();
 }
 
 void UnmapTapeButtons()
@@ -768,6 +679,18 @@ static void HandleTapeButtons(struct GadgetInfo *gi)
       DrawCompleteVideoDisplay();
       break;
 
+    case TAPE_CTRL_ID_INDEX:
+      if (tape.recording)
+       printf("Setting index mark ...\n");
+      else if (tape.playing)
+      {
+       printf("Going to index mark ...\n");
+
+       tape.index_search = TRUE;
+       SetDrawDeactivationMask(REDRAW_FIELD);
+      }
+      break;
+
     case TAPE_CTRL_ID_STOP:
       TapeStop();
       break;
@@ -800,6 +723,7 @@ static void HandleTapeButtons(struct GadgetInfo *gi)
          tape.playing = FALSE;
          tape.recording = TRUE;
          tape.changed = TRUE;
+         tape.game_version = GAME_VERSION_ACTUAL;
 
          DrawVideoDisplay(VIDEO_STATE_PLAY_OFF | VIDEO_STATE_REC_ON,0);
        }
index 0756dac7f48a2533662b1b7b4958c3803350ba3a..33fa808927dfce42c2abd8addb2b6eb4292ea887 100644 (file)
@@ -84,17 +84,17 @@ void DrawCompleteVideoDisplay(void);
 void TapeStartRecording(void);
 void TapeStopRecording(void);
 void TapeRecordAction(byte *);
-void TapeRecordDelay(void);
 void TapeTogglePause(void);
 void TapeStartPlaying(void);
 void TapeStopPlaying(void);
 byte *TapePlayAction(void);
-boolean TapePlayDelay(void);
 void TapeStop(void);
 void TapeErase(void);
 unsigned int GetTapeLength(void);
 
 void CreateTapeButtons();
+void MapTapeEjectButton();
+void MapTapeIndexButton();
 void MapTapeButtons();
 void UnmapTapeButtons();
 
index 8946e84b61b483d3d28b6578d487db5e6c6ceae9..fe5c9f690cc89031b9db3b3f4998170e6cca3191 100644 (file)
@@ -75,6 +75,51 @@ void SetDrawtoField(int mode)
   }
 }
 
+void RedrawPlayfield(boolean force_redraw, int x, int y, int width, int height)
+{
+  if (game_status == PLAYING)
+  {
+    if (force_redraw)
+    {
+      x = gfx.sx - TILEX;
+      y = gfx.sy - TILEY;
+      width = gfx.sxsize + 2 * TILEX;
+      height = gfx.sysize + 2 * TILEY;
+    }
+
+    if (force_redraw || setup.direct_draw)
+    {
+      int xx, yy;
+      int x1 = (x - SX) / TILEX, y1 = (y - SY) / TILEY;
+      int x2 = (x - SX + width) / TILEX, y2 = (y - SY + height) / TILEY;
+
+      if (setup.direct_draw)
+       SetDrawtoField(DRAW_BACKBUFFER);
+
+      for(xx=BX1; xx<=BX2; xx++)
+       for(yy=BY1; yy<=BY2; yy++)
+         if (xx >= x1 && xx <= x2 && yy >= y1 && yy <= y2)
+           DrawScreenField(xx, yy);
+      DrawAllPlayers();
+
+      if (setup.direct_draw)
+       SetDrawtoField(DRAW_DIRECT);
+    }
+
+    if (setup.soft_scrolling)
+    {
+      int fx = FX, fy = FY;
+
+      fx += (ScreenMovDir & (MV_LEFT|MV_RIGHT) ? ScreenGfxPos : 0);
+      fy += (ScreenMovDir & (MV_UP|MV_DOWN)    ? ScreenGfxPos : 0);
+
+      BlitBitmap(fieldbuffer, backbuffer, fx,fy, SXSIZE,SYSIZE, SX,SY);
+    }
+  }
+
+  BlitBitmap(drawto, window, x, y, width, height, x, y);
+}
+
 void BackToFront()
 {
   int x,y;
@@ -89,7 +134,7 @@ void BackToFront()
   if (redraw_mask & REDRAW_FIELD)
     redraw_mask &= ~REDRAW_TILES;
 
-  if (!redraw_mask)
+  if (redraw_mask == REDRAW_NONE)
     return;
 
   if (global.fps_slowdown && game_status == PLAYING)
@@ -250,7 +295,7 @@ void BackToFront()
     for(y=0; y<MAX_BUF_YSIZE; y++)
       redraw[x][y] = 0;
   redraw_tiles = 0;
-  redraw_mask = 0;
+  redraw_mask = REDRAW_NONE;
 }
 
 void FadeToFront()
index 90f7f81e2f9e6576ad3b41bc8b0f1ea910624e1c..634bed9b217fa93bc232d95b3249638dcc755274 100644 (file)
@@ -58,6 +58,7 @@
 #define REQUEST_WAIT_FOR       (REQ_ASK | REQ_CONFIRM | REQ_PLAYER)
 
 void SetDrawtoField(int);
+void RedrawPlayfield(boolean, int, int, int, int);
 void BackToFront();
 void FadeToFront();
 void ClearWindow();