mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-05-10 02:41:49 +00:00
Votekick menu
Not super polished, literally just implemented this way to make freeze
This commit is contained in:
parent
d8ea8c0fe1
commit
b59346f637
5 changed files with 224 additions and 2 deletions
11
src/k_menu.h
11
src/k_menu.h
|
|
@ -418,6 +418,8 @@ extern menu_t EXTRAS_EggTVDef;
|
||||||
extern menuitem_t PAUSE_Main[];
|
extern menuitem_t PAUSE_Main[];
|
||||||
extern menu_t PAUSE_MainDef;
|
extern menu_t PAUSE_MainDef;
|
||||||
|
|
||||||
|
extern menu_t PAUSE_KickHandlerDef;
|
||||||
|
|
||||||
// EXTRAS
|
// EXTRAS
|
||||||
extern menuitem_t MISC_Manual[];
|
extern menuitem_t MISC_Manual[];
|
||||||
extern menu_t MISC_ManualDef;
|
extern menu_t MISC_ManualDef;
|
||||||
|
|
@ -1082,6 +1084,14 @@ void M_QuitPauseMenu(INT32 choice);
|
||||||
boolean M_PauseInputs(INT32 ch);
|
boolean M_PauseInputs(INT32 ch);
|
||||||
void M_PauseTick(void);
|
void M_PauseTick(void);
|
||||||
|
|
||||||
|
extern struct playerkickmenu_s {
|
||||||
|
tic_t ticker;
|
||||||
|
UINT8 player;
|
||||||
|
UINT8 poke;
|
||||||
|
} playerkickmenu;
|
||||||
|
|
||||||
|
void M_KickHandler(INT32 choice);
|
||||||
|
|
||||||
extern consvar_t cv_dummymenuplayer;
|
extern consvar_t cv_dummymenuplayer;
|
||||||
extern consvar_t cv_dummyspectator;
|
extern consvar_t cv_dummyspectator;
|
||||||
|
|
||||||
|
|
@ -1154,6 +1164,7 @@ void M_DrawMPServerBrowser(void);
|
||||||
|
|
||||||
// Pause menu:
|
// Pause menu:
|
||||||
void M_DrawPause(void);
|
void M_DrawPause(void);
|
||||||
|
void M_DrawKickHandler(void);
|
||||||
|
|
||||||
// Replay Playback
|
// Replay Playback
|
||||||
void M_DrawPlaybackMenu(void);
|
void M_DrawPlaybackMenu(void);
|
||||||
|
|
|
||||||
|
|
@ -4538,6 +4538,104 @@ void M_DrawPause(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void M_DrawKickHandler(void)
|
||||||
|
{
|
||||||
|
// fake round queue drawer simply to make release
|
||||||
|
INT32 x = 29 + 4, y = 70, returny = y;
|
||||||
|
INT32 pokeamount = (playerkickmenu.poke & 1) ? -playerkickmenu.poke/2 : playerkickmenu.poke/2;
|
||||||
|
INT32 x2 = x + pokeamount - 9 - 8;
|
||||||
|
|
||||||
|
boolean datarightofcolumn = false;
|
||||||
|
|
||||||
|
patch_t *resbar = W_CachePatchName("R_RESBAR", PU_CACHE); // Results bars for players
|
||||||
|
|
||||||
|
UINT8 i;
|
||||||
|
|
||||||
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
|
{
|
||||||
|
V_DrawMappedPatch(
|
||||||
|
x, y,
|
||||||
|
(playeringame[i] == true)
|
||||||
|
? ((players[i].spectator == true) ? V_TRANSLUCENT : 0)
|
||||||
|
: V_MODULATE,
|
||||||
|
resbar, NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
V_DrawRightAlignedThinString(
|
||||||
|
x+13, y-2,
|
||||||
|
((i == playerkickmenu.player)
|
||||||
|
? highlightflags
|
||||||
|
: 0
|
||||||
|
),
|
||||||
|
va("%u", i)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (playeringame[i] == true)
|
||||||
|
{
|
||||||
|
if (players[i].skincolor != SKINCOLOR_NONE)
|
||||||
|
{
|
||||||
|
UINT8 *charcolormap;
|
||||||
|
if ((players[i].pflags & PF_NOCONTEST) && players[i].bot)
|
||||||
|
{
|
||||||
|
// RETIRED !!
|
||||||
|
charcolormap = R_GetTranslationColormap(TC_DEFAULT, players[i].skincolor, GTC_CACHE);
|
||||||
|
V_DrawMappedPatch(x+14, y-5, 0, W_CachePatchName("MINIDEAD", PU_CACHE), charcolormap);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
charcolormap = R_GetTranslationColormap(players[i].skin, players[i].skincolor, GTC_CACHE);
|
||||||
|
V_DrawMappedPatch(x+14, y-5, 0, faceprefix[players[i].skin][FACE_MINIMAP], charcolormap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
V_DrawThinString(
|
||||||
|
x+27, y-2,
|
||||||
|
(
|
||||||
|
P_IsMachineLocalPlayer(&players[i])
|
||||||
|
? highlightflags
|
||||||
|
: 0
|
||||||
|
)|V_ALLOWLOWERCASE|V_6WIDTHSPACE,
|
||||||
|
player_names[i]
|
||||||
|
);
|
||||||
|
|
||||||
|
V_DrawRightAlignedThinString(
|
||||||
|
x+118, y-2,
|
||||||
|
V_ALLOWLOWERCASE|V_6WIDTHSPACE,
|
||||||
|
(players[i].spectator) ? "SPECTATOR" : "PLAYING"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == playerkickmenu.player)
|
||||||
|
{
|
||||||
|
V_DrawScaledPatch(
|
||||||
|
x2, y-1,
|
||||||
|
(datarightofcolumn ? V_FLIP : 0),
|
||||||
|
W_CachePatchName("M_CURSOR", PU_CACHE)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
y += 13;
|
||||||
|
|
||||||
|
if (i == (MAXPLAYERS-1)/2)
|
||||||
|
{
|
||||||
|
x = 169 - 4;
|
||||||
|
y = returny;
|
||||||
|
|
||||||
|
datarightofcolumn = true;
|
||||||
|
x2 = x + 118 + 9 + 8 + 4 - pokeamount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//V_DrawFill(32 + (playerkickmenu.player & 8), 32 + (playerkickmenu.player & 7)*8, 8, 8, playeringame[playerkickmenu.player] ? 0 : 16);
|
||||||
|
|
||||||
|
V_DrawFixedPatch(0, 0, FRACUNIT, 0, W_CachePatchName("MENUHINT", PU_CACHE), NULL);
|
||||||
|
V_DrawCenteredThinString(
|
||||||
|
BASEVIDWIDTH/2, 12,
|
||||||
|
V_ALLOWLOWERCASE|V_6WIDTHSPACE,
|
||||||
|
K_GetMidVoteLabel(menucallvote)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
void M_DrawPlaybackMenu(void)
|
void M_DrawPlaybackMenu(void)
|
||||||
{
|
{
|
||||||
INT16 i;
|
INT16 i;
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ target_sources(SRB2SDL2 PRIVATE
|
||||||
discord-requests.c
|
discord-requests.c
|
||||||
message-box.c
|
message-box.c
|
||||||
pause-game.c
|
pause-game.c
|
||||||
|
pause-kick.c
|
||||||
pause-replay.c
|
pause-replay.c
|
||||||
virtual-keyboard.c
|
virtual-keyboard.c
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -333,8 +333,8 @@ void M_HandlePauseMenuCallVote(INT32 choice)
|
||||||
}
|
}
|
||||||
else if (K_MidVoteTypeUsesVictim(menucallvote) == true)
|
else if (K_MidVoteTypeUsesVictim(menucallvote) == true)
|
||||||
{
|
{
|
||||||
// Not yet implemented.
|
S_StartSound(NULL, sfx_s3k5b);
|
||||||
S_StartSound(NULL, sfx_s3k7b);
|
M_KickHandler(-1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
112
src/menus/transient/pause-kick.c
Normal file
112
src/menus/transient/pause-kick.c
Normal file
|
|
@ -0,0 +1,112 @@
|
||||||
|
/// \file menus/transient/pause-kick.c
|
||||||
|
/// \brief Player Kick menu
|
||||||
|
|
||||||
|
#include "../../k_menu.h"
|
||||||
|
#include "../../s_sound.h"
|
||||||
|
#include "../../p_local.h"
|
||||||
|
#include "../../k_zvote.h"
|
||||||
|
|
||||||
|
struct playerkickmenu_s playerkickmenu;
|
||||||
|
|
||||||
|
static void M_PlayerKickHandler(INT32 choice)
|
||||||
|
{
|
||||||
|
const UINT8 pid = 0;
|
||||||
|
|
||||||
|
(void)choice;
|
||||||
|
|
||||||
|
if (menucmd[pid].dpad_lr != 0) // symmetrical in this case
|
||||||
|
{
|
||||||
|
S_StartSound(NULL, sfx_s3k5b);
|
||||||
|
|
||||||
|
playerkickmenu.player = ((playerkickmenu.player + 8) % MAXPLAYERS);
|
||||||
|
|
||||||
|
M_SetMenuDelay(pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (menucmd[pid].dpad_ud > 0)
|
||||||
|
{
|
||||||
|
S_StartSound(NULL, sfx_s3k5b);
|
||||||
|
|
||||||
|
playerkickmenu.player = ((playerkickmenu.player + 1) & 7) + (playerkickmenu.player & 8);
|
||||||
|
|
||||||
|
M_SetMenuDelay(pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (menucmd[pid].dpad_ud < 0)
|
||||||
|
{
|
||||||
|
S_StartSound(NULL, sfx_s3k5b);
|
||||||
|
|
||||||
|
playerkickmenu.player = ((playerkickmenu.player + 7) & 7) + (playerkickmenu.player & 8);
|
||||||
|
|
||||||
|
M_SetMenuDelay(pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (M_MenuBackPressed(pid))
|
||||||
|
{
|
||||||
|
M_GoBack(0);
|
||||||
|
M_SetMenuDelay(pid);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (M_MenuConfirmPressed(pid))
|
||||||
|
{
|
||||||
|
M_SetMenuDelay(pid);
|
||||||
|
|
||||||
|
if (
|
||||||
|
playeringame[playerkickmenu.player]
|
||||||
|
&& P_IsMachineLocalPlayer(&players[playerkickmenu.player]) == false
|
||||||
|
&& playerkickmenu.player != serverplayer
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (
|
||||||
|
K_MinimalCheckNewMidVote(menucallvote) == true
|
||||||
|
#ifndef DEVELOP
|
||||||
|
&& IsPlayerAdmin(playerkickmenu.player) == false
|
||||||
|
#endif
|
||||||
|
)
|
||||||
|
{
|
||||||
|
M_ClearMenus(true);
|
||||||
|
K_SendCallMidVote(menucallvote, playerkickmenu.player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
playerkickmenu.poke = 8;
|
||||||
|
S_StartSound(NULL, sfx_s3k7b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static menuitem_t PAUSE_KickHandler[] =
|
||||||
|
{
|
||||||
|
{IT_NOTHING | IT_KEYHANDLER, NULL, NULL, NULL, {.routine = M_PlayerKickHandler}, 0, 0},
|
||||||
|
};
|
||||||
|
|
||||||
|
static void M_KickHandlerTick(void)
|
||||||
|
{
|
||||||
|
playerkickmenu.ticker++;
|
||||||
|
|
||||||
|
if (playerkickmenu.poke)
|
||||||
|
playerkickmenu.poke--;
|
||||||
|
}
|
||||||
|
|
||||||
|
menu_t PAUSE_KickHandlerDef = {
|
||||||
|
sizeof(PAUSE_KickHandler) / sizeof(menuitem_t),
|
||||||
|
&PAUSE_MainDef,
|
||||||
|
0,
|
||||||
|
PAUSE_KickHandler,
|
||||||
|
0, 0,
|
||||||
|
0, 0,
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
0, 0,
|
||||||
|
M_DrawKickHandler,
|
||||||
|
M_KickHandlerTick,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
void M_KickHandler(INT32 choice)
|
||||||
|
{
|
||||||
|
PAUSE_KickHandlerDef.prevMenu = currentMenu;
|
||||||
|
M_SetupNextMenu(&PAUSE_KickHandlerDef, true);
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue