* fixed bug with not scrolling the screen in multi-player mode with the
focus on player 1 when all players are moving in different directions
* fixed bug with keeping pointer to gadget even after its deallocation
+ * fixed bug with allowing "focus on all players" in network games
+ * fixed bug with player focus when playing tapes from network games
2006-03-22
* uploaded pre-release (test) version 3.2.0-7 binary and source code
-#define COMPILE_DATE_STRING "[2006-03-29 19:24]"
+#define COMPILE_DATE_STRING "[2006-03-29 21:11]"
TapeTogglePause(TAPE_TOGGLE_MANUAL);
}
- if (game_status == GAME_MODE_PLAYING)
+ if (game_status == GAME_MODE_PLAYING && !network_playing)
{
int centered_player_nr_next = -999;
game.envelope_active = FALSE;
- game.centered_player_nr = game.centered_player_nr_next = -1; /* focus all */
+ /* 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 0
+ printf("::: focus set to player %d [%d]\n",
+ game.centered_player_nr, local_player->index_nr);
+#endif
+
for (i = 0; i < NUM_BELTS; i++)
{
game.belt_dir[i] = MV_NONE;
switch (id)
{
case GAME_CTRL_ID_STOP:
- RequestQuitGame(TRUE);
+ if (tape.playing)
+ TapeStop();
+ else
+ RequestQuitGame(TRUE);
break;
case GAME_CTRL_ID_PAUSE:
#endif
{
tape.pausing = FALSE;
- DrawVideoDisplay(VIDEO_STATE_PAUSE_OFF,0);
+ DrawVideoDisplay(VIDEO_STATE_PAUSE_OFF, 0);
}
}
break;
Error(ERR_NETWORK_SERVER, "client %d (%s) switches to # %d",
player->number, player->player_name, nr_wanted);
else if (player->number == nr_wanted)
- Error(ERR_NETWORK_SERVER, "client %d (%s) still has # %d",
+ Error(ERR_NETWORK_SERVER, "client %d (%s) already has # %d",
player->number, player->player_name, nr_wanted);
else
Error(ERR_NETWORK_SERVER,
- "client %d (%s) cannot switch (client %d still exists)",
+ "client %d (%s) cannot switch (client %d already exists)",
player->number, player->player_name, nr_wanted);
}
}
else if (old_client_nr == first_player.nr) /* failed -- local player? */
{
+#if 0
char *color[] = { "yellow", "red", "green", "blue" };
+#endif
char request[100];
+#if 1
+ sprintf(request, "Sorry ! Player %d already exists ! You are player %d !",
+ index_nr_wanted + 1, new_index_nr + 1);
+#else
sprintf(request, "Sorry ! %s player still exists ! You are %s player !",
color[index_nr_wanted], color[new_index_nr]);
+#endif
Request(request, REQ_CONFIRM);
Error(ERR_NETWORK_CLIENT, "cannot switch -- you keep client # %d",