fixed handling passthrough option for clickable global animations
[rocksndiamonds.git] / src / game.c
index a17dc326f05e0a3a97c9490cb0fd39024c0982bb..96fa321fb09a10f26898014f98dfd79846f3a7fa 100644 (file)
@@ -3545,18 +3545,6 @@ void InitGame()
 
   game.envelope_active = FALSE;
 
-  /* set focus to local player for network games, else to all players */
-  game.centered_player_nr = (network_playing ? local_player->index_nr : -1);
-  game.centered_player_nr_next = game.centered_player_nr;
-  game.set_centered_player = FALSE;
-
-  if (network_playing && tape.recording)
-  {
-    /* store client dependent player focus when recording network games */
-    tape.centered_player_nr_next = game.centered_player_nr_next;
-    tape.set_centered_player = TRUE;
-  }
-
   for (i = 0; i < NUM_BELTS; i++)
   {
     game.belt_dir[i] = MV_NONE;
@@ -3570,6 +3558,24 @@ void InitGame()
   if (options.debug)
   {
     printf("Player status at level initialization:\n");
+
+    for (i = 0; i < MAX_PLAYERS; i++)
+    {
+      struct PlayerInfo *player = &stored_player[i];
+
+      printf("- player %d: present == %d, connected == %d [%d/%d], active == %d",
+            i + 1,
+            player->present,
+            player->connected,
+            player->connected_locally,
+            player->connected_network,
+            player->active);
+
+      if (local_player == player)
+       printf(" (local player)");
+
+      printf("\n");
+    }
   }
 #endif
 
@@ -3730,10 +3736,12 @@ void InitGame()
     {
       struct PlayerInfo *player = &stored_player[i];
 
-      printf("- player %d: present == %d, connected == %d, active == %d",
+      printf("- player %d: present == %d, connected == %d [%d/%d], active == %d",
             i + 1,
             player->present,
             player->connected,
+            player->connected_locally,
+            player->connected_network,
             player->active);
 
       if (local_player == player)
@@ -3836,10 +3844,12 @@ void InitGame()
     {
       struct PlayerInfo *player = &stored_player[i];
 
-      printf("- player %d: present == %d, connected == %d, active == %d",
+      printf("- player %d: present == %d, connected == %d [%d/%d], active == %d",
             i + 1,
             player->present,
             player->connected,
+            player->connected_locally,
+            player->connected_network,
             player->active);
 
       if (local_player == player)
@@ -3895,6 +3905,18 @@ void InitGame()
   printf("::: local_player->present == %d\n", local_player->present);
 #endif
 
+  /* set focus to local player for network games, else to all players */
+  game.centered_player_nr = (network_playing ? local_player->index_nr : -1);
+  game.centered_player_nr_next = game.centered_player_nr;
+  game.set_centered_player = FALSE;
+
+  if (network_playing && tape.recording)
+  {
+    /* store client dependent player focus when recording network games */
+    tape.centered_player_nr_next = game.centered_player_nr_next;
+    tape.set_centered_player = TRUE;
+  }
+
   if (tape.playing)
   {
     /* when playing a tape, eliminate all players who do not participate */
@@ -3989,10 +4011,12 @@ void InitGame()
     {
       struct PlayerInfo *player = &stored_player[i];
 
-      printf("- player %d: present == %d, connected == %d, active == %d",
+      printf("- player %d: present == %d, connected == %d [%d/%d], active == %d",
             i + 1,
             player->present,
             player->connected,
+            player->connected_locally,
+            player->connected_network,
             player->active);
 
       if (local_player == player)
@@ -4208,10 +4232,12 @@ void InitGame()
       {
        struct PlayerInfo *player = &stored_player[i];
 
-       printf("- player %d: present == %d, connected == %d, active == %d",
+       printf("- player %d: present == %d, connected == %d [%d/%d], active == %d",
               i + 1,
               player->present,
               player->connected,
+              player->connected_locally,
+              player->connected_network,
               player->active);
 
        if (local_player == player)
@@ -15444,7 +15470,8 @@ void CreateGameButtons()
 
   for (i = 0; i < NUM_GAME_BUTTONS; i++)
   {
-    struct GraphicInfo *gfx = &graphic_info[gamebutton_info[i].graphic];
+    int graphic = gamebutton_info[i].graphic;
+    struct GraphicInfo *gfx = &graphic_info[graphic];
     struct XY *pos = gamebutton_info[i].pos;
     struct GadgetInfo *gi;
     int button_type;
@@ -15498,6 +15525,7 @@ void CreateGameButtons()
     }
 
     gi = CreateGadget(GDI_CUSTOM_ID, id,
+                     GDI_IMAGE_ID, graphic,
                      GDI_INFO_TEXT, gamebutton_info[i].infotext,
                      GDI_X, base_x + GDI_ACTIVE_POS(pos->x),
                      GDI_Y, base_y + GDI_ACTIVE_POS(pos->y),