mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'toggle-tombola' into 'master'
Net-safe item toggle menu (resolves ring-racers#85) Closes ring-racers#85 See merge request kart-krew-dev/ring-racers-internal!2843
This commit is contained in:
commit
04e37029d7
4 changed files with 100 additions and 51 deletions
|
|
@ -666,40 +666,42 @@ consvar_t cv_cheats = UnsavedNetVar(cvlist_command)("cheats",
|
||||||
consvar_t cv_countdowntime = UnsavedNetVar("countdowntime", "30").min_max(15, 9999);
|
consvar_t cv_countdowntime = UnsavedNetVar("countdowntime", "30").min_max(15, 9999);
|
||||||
consvar_t cv_duelspectatorreentry = UnsavedNetVar("duelspectatorreentry", "180").min_max(0, 10*60);
|
consvar_t cv_duelspectatorreentry = UnsavedNetVar("duelspectatorreentry", "180").min_max(0, 10*60);
|
||||||
|
|
||||||
|
void KartItem_OnChange(void);
|
||||||
|
|
||||||
// SRB2kart
|
// SRB2kart
|
||||||
consvar_t cv_items[] = {
|
consvar_t cv_items[] = {
|
||||||
UnsavedNetVar("sneaker", "On").on_off(),
|
UnsavedNetVar("sneaker", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("rocketsneaker", "On").on_off(),
|
UnsavedNetVar("rocketsneaker", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("invincibility", "On").on_off(),
|
UnsavedNetVar("invincibility", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("banana", "On").on_off(),
|
UnsavedNetVar("banana", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("eggmark", "On").on_off(),
|
UnsavedNetVar("eggmark", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("orbinaut", "On").on_off(),
|
UnsavedNetVar("orbinaut", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("jawz", "On").on_off(),
|
UnsavedNetVar("jawz", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("mine", "On").on_off(),
|
UnsavedNetVar("mine", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("landmine", "On").on_off(),
|
UnsavedNetVar("landmine", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("ballhog", "On").on_off(),
|
UnsavedNetVar("ballhog", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("selfpropelledbomb", "On").on_off(),
|
UnsavedNetVar("selfpropelledbomb", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("grow", "On").on_off(),
|
UnsavedNetVar("grow", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("shrink", "On").on_off(),
|
UnsavedNetVar("shrink", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("lightningshield", "On").on_off(),
|
UnsavedNetVar("lightningshield", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("bubbleshield", "On").on_off(),
|
UnsavedNetVar("bubbleshield", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("flameshield", "On").on_off(),
|
UnsavedNetVar("flameshield", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("hyudoro", "On").on_off(),
|
UnsavedNetVar("hyudoro", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("pogospring", "On").on_off(),
|
UnsavedNetVar("pogospring", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("superring", "On").on_off(),
|
UnsavedNetVar("superring", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("kitchensink", "On").on_off(),
|
UnsavedNetVar("kitchensink", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("droptarget", "On").on_off(),
|
UnsavedNetVar("droptarget", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("gardentop", "On").on_off(),
|
UnsavedNetVar("gardentop", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("gachabom", "On").on_off(),
|
UnsavedNetVar("gachabom", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("stoneshoe", "On").on_off(),
|
UnsavedNetVar("stoneshoe", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("toxomister", "On").on_off(),
|
UnsavedNetVar("toxomister", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("dualsneaker", "On").on_off(),
|
UnsavedNetVar("dualsneaker", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("triplesneaker", "On").on_off(),
|
UnsavedNetVar("triplesneaker", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("triplebanana", "On").on_off(),
|
UnsavedNetVar("triplebanana", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("tripleorbinaut", "On").on_off(),
|
UnsavedNetVar("tripleorbinaut", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("quadorbinaut", "On").on_off(),
|
UnsavedNetVar("quadorbinaut", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("dualjawz", "On").on_off(),
|
UnsavedNetVar("dualjawz", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
UnsavedNetVar("triplegachabom", "On").on_off(),
|
UnsavedNetVar("triplegachabom", "On").on_off().onchange_noinit(KartItem_OnChange),
|
||||||
};
|
};
|
||||||
|
|
||||||
consvar_t cv_kartbot = UnsavedNetVar("bots", "Off").values({
|
consvar_t cv_kartbot = UnsavedNetVar("bots", "Off").values({
|
||||||
|
|
@ -784,7 +786,9 @@ consvar_t cv_shoutcolor = UnsavedNetVar("shout_color", "Red").values({
|
||||||
consvar_t cv_shoutname = UnsavedNetVar("shout_name", "SERVER");
|
consvar_t cv_shoutname = UnsavedNetVar("shout_name", "SERVER");
|
||||||
|
|
||||||
consvar_t cv_spectatorreentry = UnsavedNetVar("spectatorreentry", "30").min_max(0, 10*60);
|
consvar_t cv_spectatorreentry = UnsavedNetVar("spectatorreentry", "30").min_max(0, 10*60);
|
||||||
consvar_t cv_thunderdome = UnsavedNetVar("thunderdome", "Off").on_off();
|
|
||||||
|
void ThunderDome_OnChange(void);
|
||||||
|
consvar_t cv_thunderdome = UnsavedNetVar("thunderdome", "Off").on_off().onchange_noinit(ThunderDome_OnChange);
|
||||||
|
|
||||||
void TimeLimit_OnChange(void);
|
void TimeLimit_OnChange(void);
|
||||||
consvar_t cv_timelimit = UnsavedNetVar("timelimit", "Default").min_max(1, 30*60, {{0, "None"}, {-1, "Default"}}).onchange_noinit(TimeLimit_OnChange);
|
consvar_t cv_timelimit = UnsavedNetVar("timelimit", "Default").min_max(1, 30*60, {{0, "None"}, {-1, "Default"}}).onchange_noinit(TimeLimit_OnChange);
|
||||||
|
|
|
||||||
|
|
@ -7464,6 +7464,26 @@ void NumLaps_OnChange(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean M_AnyItemsEnabled(void);
|
||||||
|
void KartItem_OnChange(void);
|
||||||
|
void KartItem_OnChange(void)
|
||||||
|
{
|
||||||
|
if (netgame && !server)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const boolean check = !M_AnyItemsEnabled();
|
||||||
|
if (cv_thunderdome.value != check)
|
||||||
|
CV_SetValue(&cv_thunderdome, check);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ThunderDome_MenuSound(void);
|
||||||
|
void ThunderDome_OnChange(void);
|
||||||
|
void ThunderDome_OnChange(void)
|
||||||
|
{
|
||||||
|
ThunderDome_MenuSound();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KartFrantic_MenuSound(void);
|
||||||
void KartFrantic_OnChange(void);
|
void KartFrantic_OnChange(void);
|
||||||
void KartFrantic_OnChange(void)
|
void KartFrantic_OnChange(void)
|
||||||
{
|
{
|
||||||
|
|
@ -7481,6 +7501,8 @@ void KartFrantic_OnChange(void)
|
||||||
{
|
{
|
||||||
CONS_Printf(M_GetText("Frantic items will be turned %s next round.\n"), cv_kartfrantic.value ? M_GetText("on") : M_GetText("off"));
|
CONS_Printf(M_GetText("Frantic items will be turned %s next round.\n"), cv_kartfrantic.value ? M_GetText("on") : M_GetText("off"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
KartFrantic_MenuSound();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KartSpeed_OnChange(void);
|
void KartSpeed_OnChange(void);
|
||||||
|
|
|
||||||
|
|
@ -5997,8 +5997,10 @@ void M_DrawItemToggles(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Button prompts
|
// Button prompts
|
||||||
K_DrawGameControl(
|
x = (BASEVIDWIDTH/2) - cv_kartfrantic.value;
|
||||||
(BASEVIDWIDTH/2) - cv_kartfrantic.value, BASEVIDHEIGHT-20, 0,
|
y = BASEVIDHEIGHT-20;
|
||||||
|
INT32 w = K_DrawGameControl(
|
||||||
|
x, y, 0,
|
||||||
va(
|
va(
|
||||||
"<c_animated> Toggle All %s<white> <r_animated> Frantic Mode: %s",
|
"<c_animated> Toggle All %s<white> <r_animated> Frantic Mode: %s",
|
||||||
cv_thunderdome.value ? "<yellow>(Ring Box Mode) " : "<gold>(Item Box Mode)",
|
cv_thunderdome.value ? "<yellow>(Ring Box Mode) " : "<gold>(Item Box Mode)",
|
||||||
|
|
@ -6007,6 +6009,14 @@ void M_DrawItemToggles(void)
|
||||||
1, TINY_FONT,
|
1, TINY_FONT,
|
||||||
(((row == height-1) && (drawnum > 1)) ? V_TRANSLUCENT : 0)
|
(((row == height-1) && (drawnum > 1)) ? V_TRANSLUCENT : 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (cv_kartfrantic.value != franticitems)
|
||||||
|
{
|
||||||
|
V_DrawThinString(
|
||||||
|
x + w/2, y, 0,
|
||||||
|
(cv_kartfrantic.value ? "\x85 (next)" : "\x86 (next)")
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,8 @@ menu_t OPTIONS_GameplayItemsDef = {
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static boolean M_AnyItemsEnabled(void)
|
boolean M_AnyItemsEnabled(void);
|
||||||
|
boolean M_AnyItemsEnabled(void)
|
||||||
{
|
{
|
||||||
INT32 i;
|
INT32 i;
|
||||||
for (i = 0; i < NUMKARTRESULTS-1; i++)
|
for (i = 0; i < NUMKARTRESULTS-1; i++)
|
||||||
|
|
@ -96,9 +97,29 @@ static boolean M_AnyItemsEnabled(void)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void M_ToggleThunderdome(void)
|
void ThunderDome_MenuSound(void);
|
||||||
|
void ThunderDome_MenuSound(void)
|
||||||
{
|
{
|
||||||
CV_SetValue(&cv_thunderdome, !M_AnyItemsEnabled());
|
if (!menuactive || currentMenu != &OPTIONS_GameplayItemsDef)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (cv_thunderdome.value)
|
||||||
|
{
|
||||||
|
S_StartSoundAtVolume(NULL, sfx_slot02, 80);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
S_StartSound(NULL, sfx_itrolf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void KartFrantic_MenuSound(void);
|
||||||
|
void KartFrantic_MenuSound(void)
|
||||||
|
{
|
||||||
|
if (!menuactive || currentMenu != &OPTIONS_GameplayItemsDef)
|
||||||
|
return;
|
||||||
|
|
||||||
|
S_StartSound(NULL, (cv_kartfrantic.value ? sfx_noooo2 : sfx_kc48));
|
||||||
}
|
}
|
||||||
|
|
||||||
void M_HandleItemToggles(INT32 choice)
|
void M_HandleItemToggles(INT32 choice)
|
||||||
|
|
@ -114,20 +135,13 @@ void M_HandleItemToggles(INT32 choice)
|
||||||
|
|
||||||
if (M_MenuExtraPressed(pid))
|
if (M_MenuExtraPressed(pid))
|
||||||
{
|
{
|
||||||
INT32 v = !M_AnyItemsEnabled();
|
const boolean check = !M_AnyItemsEnabled();
|
||||||
for (i = 0; i < NUMKARTRESULTS-1; i++)
|
for (i = 0; i < NUMKARTRESULTS-1; i++)
|
||||||
{
|
{
|
||||||
CV_SetValue(&cv_items[i], v);
|
if (cv_items[i].value != check)
|
||||||
}
|
CV_SetValue(&cv_items[i], check);
|
||||||
M_ToggleThunderdome();
|
|
||||||
if (cv_thunderdome.value)
|
|
||||||
{
|
|
||||||
S_StartSoundAtVolume(NULL, sfx_slot02, 80);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
S_StartSound(NULL, sfx_itrolf);
|
|
||||||
}
|
}
|
||||||
|
// KartItem_OnChange will toggle thunderdome and play sound
|
||||||
|
|
||||||
M_SetMenuDelay(pid);
|
M_SetMenuDelay(pid);
|
||||||
}
|
}
|
||||||
|
|
@ -135,7 +149,6 @@ void M_HandleItemToggles(INT32 choice)
|
||||||
else if (M_MenuButtonPressed(pid, MBT_R))
|
else if (M_MenuButtonPressed(pid, MBT_R))
|
||||||
{
|
{
|
||||||
CV_AddValue(&cv_kartfrantic, 1);
|
CV_AddValue(&cv_kartfrantic, 1);
|
||||||
S_StartSound(NULL, (cv_kartfrantic.value ? sfx_noooo2 : sfx_kc48));
|
|
||||||
|
|
||||||
M_SetMenuDelay(pid);
|
M_SetMenuDelay(pid);
|
||||||
}
|
}
|
||||||
|
|
@ -219,7 +232,7 @@ void M_HandleItemToggles(INT32 choice)
|
||||||
S_StartSound(NULL, sfx_s1ba);
|
S_StartSound(NULL, sfx_s1ba);
|
||||||
}
|
}
|
||||||
CV_AddValue(&cv_items[currentMenu->menuitems[itemOn].mvar1-1], 1);
|
CV_AddValue(&cv_items[currentMenu->menuitems[itemOn].mvar1-1], 1);
|
||||||
M_ToggleThunderdome();
|
// KartItem_OnChange will toggle thunderdome and play sound
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue