fixed selecting correct player in single player mode (after network gaming)
[rocksndiamonds.git] / src / game.c
index efb18c36f18b708f955f7d702bd7e49974ae7bba..d37dee3a5f7c162ce69acdf33167a2d3b64f2233 100644 (file)
@@ -3503,11 +3503,9 @@ void InitGame()
 
   network_player_action_received = FALSE;
 
-#if defined(NETWORK_AVALIABLE)
   /* initial null action */
   if (network_playing)
     SendToServer_MovePlayer(MV_NONE);
-#endif
 
   ZX = ZY = -1;
   ExitX = ExitY = -1;
@@ -3964,26 +3962,21 @@ void InitGame()
   }
   else if (!network.enabled && !game.team_mode)                /* && !tape.playing */
   {
-    /* when in single player mode, eliminate all but the first active player */
+    /* when in single player mode, eliminate all but the local player */
 
     for (i = 0; i < MAX_PLAYERS; i++)
     {
-      if (stored_player[i].active)
+      struct PlayerInfo *player = &stored_player[i];
+
+      if (player->active && player != local_player)
       {
-       for (j = i + 1; j < MAX_PLAYERS; j++)
-       {
-         if (stored_player[j].active)
-         {
-           struct PlayerInfo *player = &stored_player[j];
-           int jx = player->jx, jy = player->jy;
+       int jx = player->jx, jy = player->jy;
 
-           player->active = FALSE;
-           player->present = FALSE;
+       player->active = FALSE;
+       player->present = FALSE;
 
-           StorePlayer[jx][jy] = 0;
-           Feld[jx][jy] = EL_EMPTY;
-         }
-       }
+       StorePlayer[jx][jy] = 0;
+       Feld[jx][jy] = EL_EMPTY;
       }
     }
   }
@@ -11290,14 +11283,12 @@ void StartGameActions(boolean init_network_game, boolean record_tape,
   if (record_tape)
     TapeStartRecording(new_random_seed);
 
-#if defined(NETWORK_AVALIABLE)
   if (init_network_game)
   {
     SendToServer_StartPlaying();
 
     return;
   }
-#endif
 
   InitGame();
 }
@@ -11420,10 +11411,8 @@ void GameActionsExt()
   {
     /* try to get network player actions in time */
 
-#if defined(NETWORK_AVALIABLE)
     /* last chance to get network player actions without main loop delay */
     HandleNetworking();
-#endif
 
     /* game was quit by network peer */
     if (game_status != GAME_MODE_PLAYING)
@@ -11469,10 +11458,8 @@ void GameActionsExt()
       stored_player[i].effective_action = stored_player[i].action;
   }
 
-#if defined(NETWORK_AVALIABLE)
   if (network_playing)
     SendToServer_MovePlayer(summarized_player_action);
-#endif
 
   // summarize all actions at local players mapped input device position
   // (this allows using different input devices in single player mode)
@@ -14967,11 +14954,9 @@ void RequestQuitGameExt(boolean skip_request, boolean quick_quit, char *message)
     if (!skip_request)
       CloseDoor(DOOR_CLOSE_1);
 
-#if defined(NETWORK_AVALIABLE)
     if (network.enabled)
       SendToServer_StopPlaying(NETWORK_STOP_BY_PLAYER);
     else
-#endif
     {
       if (quick_quit)
        FadeSkipNextFadeIn();
@@ -15779,12 +15764,10 @@ static void HandleGameButtonsExt(int id, int button)
     case GAME_CTRL_ID_PANEL_PAUSE:
       if (network.enabled && game_status == GAME_MODE_PLAYING)
       {
-#if defined(NETWORK_AVALIABLE)
        if (tape.pausing)
          SendToServer_ContinuePlaying();
        else
          SendToServer_PausePlaying();
-#endif
       }
       else
        TapeTogglePause(TAPE_TOGGLE_MANUAL);
@@ -15801,11 +15784,9 @@ static void HandleGameButtonsExt(int id, int button)
       }
       else if (tape.pausing)
       {
-#if defined(NETWORK_AVALIABLE)
        if (network.enabled)
          SendToServer_ContinuePlaying();
        else
-#endif
          TapeTogglePause(TAPE_TOGGLE_MANUAL | TAPE_TOGGLE_PLAY_PAUSE);
       }
       break;