mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-27 04:41:23 +00:00
Move change viewpoint control checking so it doesn't take precedence
Notably over chat.
This commit is contained in:
parent
1975a9b885
commit
5057c37dfb
1 changed files with 74 additions and 74 deletions
148
src/g_game.c
148
src/g_game.c
|
@ -1823,80 +1823,6 @@ static INT32 spectatedelay, spectatedelay2, spectatedelay3, spectatedelay4 = 0;
|
||||||
//
|
//
|
||||||
boolean G_Responder(event_t *ev)
|
boolean G_Responder(event_t *ev)
|
||||||
{
|
{
|
||||||
// allow spy mode changes even during the demo
|
|
||||||
if (gamestate == GS_LEVEL && ev->type == ev_keydown
|
|
||||||
&& (ev->data1 == KEY_F12 || ev->data1 == gamecontrol[gc_viewpoint][0] || ev->data1 == gamecontrol[gc_viewpoint][1]))
|
|
||||||
{
|
|
||||||
if (splitscreen || !netgame)
|
|
||||||
displayplayer = consoleplayer;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UINT8 i = 0; // spy mode
|
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
|
||||||
{
|
|
||||||
displayplayer++;
|
|
||||||
if (displayplayer == MAXPLAYERS)
|
|
||||||
displayplayer = 0;
|
|
||||||
|
|
||||||
if (displayplayer == consoleplayer)
|
|
||||||
break; // End loop
|
|
||||||
|
|
||||||
if (!playeringame[displayplayer])
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (players[displayplayer].spectator)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// SRB2Kart: Only go through players who are actually playing
|
|
||||||
if (players[displayplayer].exiting)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (players[displayplayer].pflags & PF_TIMEOVER)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// I don't know if we want this actually, but I'll humor the suggestion anyway
|
|
||||||
if (G_BattleGametype())
|
|
||||||
{
|
|
||||||
if (players[displayplayer].kartstuff[k_bumper] <= 0)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// SRB2Kart: we have no team-based modes, YET...
|
|
||||||
/*if (G_GametypeHasTeams())
|
|
||||||
{
|
|
||||||
if (players[consoleplayer].ctfteam
|
|
||||||
&& players[displayplayer].ctfteam != players[consoleplayer].ctfteam)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else if (gametype == GT_HIDEANDSEEK)
|
|
||||||
{
|
|
||||||
if (players[consoleplayer].pflags & PF_TAGIT)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Other Tag-based gametypes?
|
|
||||||
else if (G_TagGametype())
|
|
||||||
{
|
|
||||||
if (!players[consoleplayer].spectator
|
|
||||||
&& (players[consoleplayer].pflags & PF_TAGIT) != (players[displayplayer].pflags & PF_TAGIT))
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else if (G_GametypeHasSpectators() && G_BattleGametype())
|
|
||||||
{
|
|
||||||
if (!players[consoleplayer].spectator)
|
|
||||||
continue;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// change statusbar also if playing back demo
|
|
||||||
if (singledemo)
|
|
||||||
ST_changeDemoView();
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// any other key pops up menu if in demos
|
// any other key pops up menu if in demos
|
||||||
if (gameaction == ga_nothing && !singledemo &&
|
if (gameaction == ga_nothing && !singledemo &&
|
||||||
((demoplayback && !modeattacking && !titledemo) || gamestate == GS_TITLESCREEN))
|
((demoplayback && !modeattacking && !titledemo) || gamestate == GS_TITLESCREEN))
|
||||||
|
@ -1974,6 +1900,80 @@ boolean G_Responder(event_t *ev)
|
||||||
if (HU_Responder(ev))
|
if (HU_Responder(ev))
|
||||||
return true; // chat ate the event
|
return true; // chat ate the event
|
||||||
|
|
||||||
|
// allow spy mode changes even during the demo
|
||||||
|
if (gamestate == GS_LEVEL && ev->type == ev_keydown
|
||||||
|
&& (ev->data1 == KEY_F12 || ev->data1 == gamecontrol[gc_viewpoint][0] || ev->data1 == gamecontrol[gc_viewpoint][1]))
|
||||||
|
{
|
||||||
|
if (splitscreen || !netgame)
|
||||||
|
displayplayer = consoleplayer;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
UINT8 i = 0; // spy mode
|
||||||
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
|
{
|
||||||
|
displayplayer++;
|
||||||
|
if (displayplayer == MAXPLAYERS)
|
||||||
|
displayplayer = 0;
|
||||||
|
|
||||||
|
if (displayplayer == consoleplayer)
|
||||||
|
break; // End loop
|
||||||
|
|
||||||
|
if (!playeringame[displayplayer])
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (players[displayplayer].spectator)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// SRB2Kart: Only go through players who are actually playing
|
||||||
|
if (players[displayplayer].exiting)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (players[displayplayer].pflags & PF_TIMEOVER)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// I don't know if we want this actually, but I'll humor the suggestion anyway
|
||||||
|
if (G_BattleGametype())
|
||||||
|
{
|
||||||
|
if (players[displayplayer].kartstuff[k_bumper] <= 0)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// SRB2Kart: we have no team-based modes, YET...
|
||||||
|
/*if (G_GametypeHasTeams())
|
||||||
|
{
|
||||||
|
if (players[consoleplayer].ctfteam
|
||||||
|
&& players[displayplayer].ctfteam != players[consoleplayer].ctfteam)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (gametype == GT_HIDEANDSEEK)
|
||||||
|
{
|
||||||
|
if (players[consoleplayer].pflags & PF_TAGIT)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// Other Tag-based gametypes?
|
||||||
|
else if (G_TagGametype())
|
||||||
|
{
|
||||||
|
if (!players[consoleplayer].spectator
|
||||||
|
&& (players[consoleplayer].pflags & PF_TAGIT) != (players[displayplayer].pflags & PF_TAGIT))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (G_GametypeHasSpectators() && G_BattleGametype())
|
||||||
|
{
|
||||||
|
if (!players[consoleplayer].spectator)
|
||||||
|
continue;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// change statusbar also if playing back demo
|
||||||
|
if (singledemo)
|
||||||
|
ST_changeDemoView();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// update keys current state
|
// update keys current state
|
||||||
G_MapEventsToControls(ev);
|
G_MapEventsToControls(ev);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue