diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 7806fdc2..72f0dd2b 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2564,7 +2564,7 @@ void CL_RemovePlayer(INT32 playernum, INT32 reason) if (playernum == displayplayer && !demoplayback) displayplayer = consoleplayer; // don't look through someone's view who isn't there else - G_ResetViews(0); + G_ResetViews(); #ifdef HAVE_BLUA LUA_InvalidatePlayer(&players[playernum]); diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 5788eb65..84741c05 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -1987,7 +1987,7 @@ Command_View_f (void) olddisplayplayer = (*displayplayerp); (*displayplayerp) = playernum; - G_ResetViews(viewnum); + G_ResetView(viewnum); /* The player we wanted was corrected to who it already was. */ if ((*displayplayerp) == olddisplayplayer) diff --git a/src/g_game.c b/src/g_game.c index 8fbcec0c..ca003248 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -1809,7 +1809,7 @@ boolean G_Responder(event_t *ev) else { displayplayer++; - G_ResetViews(1); + G_ResetView(1); // change statusbar also if playing back demo if (singledemo) @@ -1824,21 +1824,21 @@ boolean G_Responder(event_t *ev) if (ev->data1 == gamecontrolbis[gc_viewpoint][0] || ev->data1 == gamecontrolbis[gc_viewpoint][1]) { secondarydisplayplayer++; - G_ResetViews(2); + G_ResetView(2); return true; } else if (ev->data1 == gamecontrol3[gc_viewpoint][0] || ev->data1 == gamecontrol3[gc_viewpoint][1]) { thirddisplayplayer++; - G_ResetViews(3); + G_ResetView(3); return true; } else if (ev->data1 == gamecontrol4[gc_viewpoint][0] || ev->data1 == gamecontrol4[gc_viewpoint][1]) { fourthdisplayplayer++; - G_ResetViews(4); + G_ResetView(4); return true; } @@ -2132,8 +2132,10 @@ G_GetDisplayplayerPtr (UINT8 viewnum) return &displayplayer; } -/* Reset only one view */ -static void +/* +Ensure a viewpoint is valid. +*/ +void G_ResetView (UINT8 viewnum) { INT32 *displayplayerp; @@ -2173,30 +2175,23 @@ G_ResetView (UINT8 viewnum) (*displayplayerp) = G_FindView((*displayplayerp)); } } + + if (viewnum == 1 && demoplayback) + consoleplayer = displayplayer; } // // G_ResetViews // Ensures all viewpoints are valid // -void G_ResetViews(UINT8 viewnum) +void G_ResetViews(void) { - UINT8 splits = splitscreen+1; - - if (viewnum == 0) - { - while (viewnum++ < splits) - { - G_ResetView(viewnum); - } - } - else + UINT8 viewnum = splitscreen+1; + do { G_ResetView(viewnum); } - - if (demoplayback) - consoleplayer = displayplayer; + while (--viewnum > 0) ; } // diff --git a/src/g_game.h b/src/g_game.h index b64fcabb..a28a709e 100644 --- a/src/g_game.h +++ b/src/g_game.h @@ -228,7 +228,8 @@ boolean G_Responder(event_t *ev); INT32 * G_GetDisplayplayerPtr (UINT8 viewnum); -void G_ResetViews(UINT8 viewnum); +void G_ResetViews(void); +void G_ResetView (UINT8 viewnum); void G_AddPlayer(INT32 playernum);