rnd-19981106-1
authorHolger Schemel <info@artsoft.org>
Fri, 6 Nov 1998 22:59:23 +0000 (23:59 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:31:33 +0000 (10:31 +0200)
src/events.c
src/game.c
src/misc.c
src/screens.c
src/tape.c
src/tools.c

index 2a858b8d60fa79a793429648b498b74afcfaf69a..ed76f9a655beac4341b36a1cb80bb4cfda26b5fb 100644 (file)
@@ -65,26 +65,6 @@ void EventLoop(void)
       Delay(10);
     }
 
-
-
-#if 0
-    else                       /* got no event, but don't be lazy... */
-    {
-      HandleNoXEvent();
-
-      /* don't use all CPU time when idle; the main loop while playing
-        has its own synchronization and is CPU friendly, too */
-
-      if (game_status != PLAYING)
-      {
-       XSync(display, FALSE);
-       Delay(10);
-      }
-    }
-#endif
-
-
-
     if (game_status == EXITGAME)
       return;
   }
@@ -297,29 +277,6 @@ void HandleButton(int mx, int my, int button)
     HandleGameButtons(mx,my,button);
   }
 
-#ifdef DEBUG
-  if (game_status == PLAYING && !button)
-  {
-    int sx = (mx - SX) / TILEX;
-    int sy = (my - SY) / TILEY;
-
-    if (IN_VIS_FIELD(sx,sy))
-    {
-      int x = LEVELX(sx);
-      int y = LEVELY(sy);
-
-      printf("INFO: Feld[%d][%d] == %d\n", x,y, Feld[x][y]);
-      printf("      Store[%d][%d] == %d\n", x,y, Store[x][y]);
-      printf("      Store2[%d][%d] == %d\n", x,y, Store2[x][y]);
-      printf("      StorePlayer[%d][%d] == %d\n", x,y, StorePlayer[x][y]);
-      printf("      MovPos[%d][%d] == %d\n", x,y, MovPos[x][y]);
-      printf("      MovDir[%d][%d] == %d\n", x,y, MovDir[x][y]);
-      printf("      MovDelay[%d][%d] == %d\n", x,y, MovDelay[x][y]);
-      printf("\n");
-    }
-  }
-#endif
-
   switch(game_status)
   {
     case MAINMENU:
@@ -355,13 +312,28 @@ void HandleButton(int mx, int my, int button)
       break;
 
     case PLAYING:
-
-      /* --> NoXEvent() will follow */
-
-      /*
-      HandleGameActions(0);
-      */
-
+#ifdef DEBUG
+      if (button == MB_RELEASED)
+      {
+       int sx = (mx - SX) / TILEX;
+       int sy = (my - SY) / TILEY;
+
+       if (IN_VIS_FIELD(sx,sy))
+       {
+         int x = LEVELX(sx);
+         int y = LEVELY(sy);
+
+         printf("INFO: Feld[%d][%d] == %d\n", x,y, Feld[x][y]);
+         printf("      Store[%d][%d] == %d\n", x,y, Store[x][y]);
+         printf("      Store2[%d][%d] == %d\n", x,y, Store2[x][y]);
+         printf("      StorePlayer[%d][%d] == %d\n", x,y, StorePlayer[x][y]);
+         printf("      MovPos[%d][%d] == %d\n", x,y, MovPos[x][y]);
+         printf("      MovDir[%d][%d] == %d\n", x,y, MovDir[x][y]);
+         printf("      MovDelay[%d][%d] == %d\n", x,y, MovDelay[x][y]);
+         printf("\n");
+       }
+      }
+#endif
       break;
 
     default:
@@ -421,148 +393,6 @@ void HandleKey(KeySym key, int key_status)
        joy |= key_info[i].action;
   }
 
-
-#if 0
-
-
-  /* Map cursor keys to joystick directions */
-
-  switch(key)
-  {
-    case XK_Left:              /* normale Richtungen */
-#ifdef XK_KP_Left
-    case XK_KP_Left:
-#endif
-    case XK_KP_4:
-#ifndef MSDOS
-    case XK_J:
-#endif
-    case XK_j:
-      joy |= JOY_LEFT;
-      break;
-
-    case XK_Right:
-#ifdef XK_KP_Right
-    case XK_KP_Right:
-#endif
-    case XK_KP_6:
-#ifndef MSDOS
-    case XK_K:
-#endif
-    case XK_k:
-      joy |= JOY_RIGHT;
-      break;
-
-    case XK_Up:
-#ifdef XK_KP_Up
-    case XK_KP_Up:
-#endif
-    case XK_KP_8:
-#ifndef MSDOS
-    case XK_I:
-#endif
-    case XK_i:
-      joy |= JOY_UP;
-      break;
-
-    case XK_Down:
-#ifdef XK_KP_Down
-    case XK_KP_Down:
-#endif
-    case XK_KP_2:
-#ifndef MSDOS
-    case XK_M:
-#endif
-    case XK_m:
-      joy |= JOY_DOWN;
-      break;
-
-#ifdef XK_KP_Home
-    case XK_KP_Home:           /* Diagonalrichtungen */
-#endif
-    case XK_KP_7:
-      joy |= JOY_UP | JOY_LEFT;
-      break;
-
-#ifdef XK_KP_Page_Up
-    case XK_KP_Page_Up:
-#endif
-    case XK_KP_9:
-      joy = JOY_UP | JOY_RIGHT;
-      break;
-
-#ifdef XK_KP_End
-    case XK_KP_End:
-#endif
-    case XK_KP_1:
-      joy |= JOY_DOWN | JOY_LEFT;
-      break;
-
-#ifdef XK_KP_Page_Down
-    case XK_KP_Page_Down:
-#endif
-    case XK_KP_3:
-      joy |= JOY_DOWN | JOY_RIGHT;
-      break;
-
-#ifndef MSDOS
-    case XK_S:                 /* Feld entfernen */
-#endif
-    case XK_s:
-      joy |= JOY_BUTTON_1 | JOY_LEFT;
-      break;
-
-#ifndef MSDOS
-    case XK_D:
-#endif
-    case XK_d:
-      joy |= JOY_BUTTON_1 | JOY_RIGHT;
-      break;
-
-#ifndef MSDOS
-    case XK_E:
-#endif
-    case XK_e:
-      joy |= JOY_BUTTON_1 | JOY_UP;
-      break;
-
-#ifndef MSDOS
-    case XK_X:
-#endif
-    case XK_x:
-      joy |= JOY_BUTTON_1 | JOY_DOWN;
-      break;
-
-    case XK_Shift_L:           /* Linker Feuerknopf */
-#ifndef MSDOS
-    case XK_Control_L:
-    case XK_Alt_L:
-    case XK_Meta_L:
-#endif
-      joy |= JOY_BUTTON_1;
-      break;
-
-    case XK_Shift_R:           /* Rechter Feuerknopf */
-#ifndef MSDOS
-    case XK_Control_R:
-    case XK_Alt_R:
-    case XK_Meta_R:
-    case XK_Mode_switch:
-    case XK_Multi_key:
-    case XK_B:                 /* (Bombe legen) */
-#endif
-    case XK_b:
-      joy |= JOY_BUTTON_2;
-      break;
-
-    default:
-      break;
-  }
-
-
-#endif
-
-
   if (joy)
   {
     if (key_status == KEY_PRESSED)
@@ -579,7 +409,7 @@ void HandleKey(KeySym key, int key_status)
   if (key_status == KEY_RELEASED)
     return;
 
-  if (key==XK_Return && game_status==PLAYING && AllPlayersGone)
+  if (key == XK_Return && game_status == PLAYING && AllPlayersGone)
   {
     CloseDoor(DOOR_CLOSE_1);
     game_status = MAINMENU;
@@ -587,7 +417,8 @@ void HandleKey(KeySym key, int key_status)
     return;
   }
 
-  if (key==XK_Escape && game_status!=MAINMENU) /* quick quit to MAINMENU */
+  /* allow quick escape to the main menu with the Escape key */
+  if (key == XK_Escape && game_status != MAINMENU)
   {
     CloseDoor(DOOR_CLOSE_1 | DOOR_NO_DELAY);
     game_status = MAINMENU;
@@ -595,13 +426,13 @@ void HandleKey(KeySym key, int key_status)
     return;
   }
 
-  if (game_status==PLAYING && (tape.playing || tape.pausing))
+  if (game_status == PLAYING && (tape.playing || tape.pausing))
     return;
 
   switch(game_status)
   {
     case TYPENAME:
-      HandleTypeName(0,key);
+      HandleTypeName(0, key);
       break;
 
     case MAINMENU:
@@ -611,14 +442,14 @@ void HandleKey(KeySym key, int key_status)
       switch(key)
       {
        case XK_Return:
-         if (game_status==MAINMENU)
-           HandleMainMenu(0,0,0,0,MB_MENU_CHOICE);
-          else if (game_status==CHOOSELEVEL)
-            HandleChooseLevel(0,0,0,0,MB_MENU_CHOICE);
-         else if (game_status==SETUP)
-           HandleSetupScreen(0,0,0,0,MB_MENU_CHOICE);
-         else if (game_status==SETUPINPUT)
-           HandleSetupInputScreen(0,0,0,0,MB_MENU_CHOICE);
+         if (game_status == MAINMENU)
+           HandleMainMenu(0,0, 0,0, MB_MENU_CHOICE);
+          else if (game_status == CHOOSELEVEL)
+            HandleChooseLevel(0,0, 0,0, MB_MENU_CHOICE);
+         else if (game_status == SETUP)
+           HandleSetupScreen(0,0, 0,0, MB_MENU_CHOICE);
+         else if (game_status == SETUPINPUT)
+           HandleSetupInputScreen(0,0, 0,0, MB_MENU_CHOICE);
          break;
 
        default:
index c19a74da3a3a696727ecf48a25697668f828edc1..b8b43f55c3d51993f7f277c01e19e6789841b97c 100644 (file)
@@ -289,10 +289,26 @@ void InitGame()
 
   /* when in single player mode, eliminate all but the first active player */
   if (!options.network && !setup.team_mode)
+  {
     for(i=0; i<MAX_PLAYERS; i++)
+    {
       if (stored_player[i].active)
+      {
        for(j=i+1; j<MAX_PLAYERS; j++)
-         stored_player[j].active = FALSE;
+       {
+         struct PlayerInfo *player = &stored_player[j];
+         int jx = player->jx, jy = player->jy;
+
+         if (player->active)
+         {
+           player->active = FALSE;
+           StorePlayer[jx][jy] = 0;
+           Feld[jx][jy] = EL_LEERRAUM;
+         }
+       }
+      }
+    }
+  }
 
   for(i=0; i<MAX_PLAYERS; i++)
   {
index 9c6d93b18618d4b6e87b9927f5fe40d5bb2a3586..c037e95941d416eaa5ea8a50d60d59bc5afd1686 100644 (file)
@@ -196,11 +196,10 @@ void MarkTileDirty(int x, int y)
   int yy = redraw_y1 + y;
 
   if (!redraw[xx][yy])
-  {
-    redraw[xx][yy] = TRUE;
     redraw_tiles++;
-    redraw_mask |= REDRAW_TILES;
-  }
+
+  redraw[xx][yy] = TRUE;
+  redraw_mask |= REDRAW_TILES;
 }
 
 void GetOptions(char *argv[])
index 5405e49bc747abf3a4c4fea810ca4027aaf63e5e..3196704612b8a65bb2d9704af6b5daf08fa70cf3 100644 (file)
@@ -44,6 +44,7 @@ void DrawHeadline()
 void DrawMainMenu()
 {
   int i;
+  char *name_text = (!options.network && setup.team_mode ? "Team:" : "Name:");
 
   FadeSounds();
   GetPlayerConfig();
@@ -51,7 +52,7 @@ void DrawMainMenu()
 
   ClearWindow();
   DrawHeadline();
-  DrawText(SX + 32,    SY + 2*32, "Name:", FS_BIG, FC_GREEN);
+  DrawText(SX + 32,    SY + 2*32, name_text, FS_BIG, FC_GREEN);
   DrawText(SX + 6*32,  SY + 2*32, setup.alias_name, FS_BIG, FC_RED);
   DrawText(SX + 32,    SY + 3*32, "Level:", FS_BIG, FC_GREEN);
   DrawText(SX + 11*32, SY + 3*32, int2str(level_nr,3), FS_BIG,
@@ -250,8 +251,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button)
          game_status = EXITGAME;
       }
 
-      if (!button)
-       redraw = TRUE;
+      redraw = TRUE;
     }
   }
   BackToFront();
index 9e8e39bc891acd6df9d205afa9844ca8251cabd6..6b43d3186cd24d3f199579829bde2bc7d59afa66 100644 (file)
@@ -170,11 +170,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()
index 6fe5759583961db3c98a09b95fc92f5754130474..a2b46c8604fd3b8ac0fed0743e0a96dde455701e 100644 (file)
@@ -64,7 +64,7 @@ void SetDrawtoField(int mode)
 void BackToFront()
 {
   int x,y;
-  Drawable buffer = (drawto_field != window ? drawto_field : backbuffer);
+  Drawable buffer = (drawto_field == window ? backbuffer : drawto_field);
 
   if (setup.direct_draw && game_status == PLAYING)
     redraw_mask &= ~REDRAW_MAIN;
@@ -72,8 +72,14 @@ void BackToFront()
   if (redraw_mask & REDRAW_TILES && redraw_tiles > REDRAWTILES_THRESHOLD)
     redraw_mask |= REDRAW_FIELD;
 
-  if (redraw_mask & REDRAW_FIELD || ScreenGfxPos)
+  if (redraw_mask & REDRAW_FIELD)
+    redraw_mask &= ~REDRAW_TILES;
+
+  /*
+  if (redraw_mask & REDRAW_FIELD ||
+      (ScreenGfxPos && setup.soft_scrolling && game_status == PLAYING))
     redraw_mask &= ~REDRAW_TILES;
+  */
 
   if (!redraw_mask)
     return;