Merge remote-tracking branch 'origin/misc_plus_menustuffs' into sal-misc

This commit is contained in:
TehRealSalt 2018-09-19 18:45:47 -04:00
commit f207140791
6 changed files with 211 additions and 132 deletions

View file

@ -5581,7 +5581,7 @@ static void HWR_DrawSkyBackground(player_t *player)
// 0--1 // 0--1
(void)player; (void)player;
HWR_GetTexture(skytexture); HWR_GetTexture(texturetranslation[skytexture]);
//Hurdler: the sky is the only texture who need 4.0f instead of 1.0 //Hurdler: the sky is the only texture who need 4.0f instead of 1.0
// because it's called just after clearing the screen // because it's called just after clearing the screen
@ -5601,7 +5601,7 @@ static void HWR_DrawSkyBackground(player_t *player)
// The only time this will probably be an issue is when a sky wider than 1024 is used as a sky AND a regular wall texture // The only time this will probably be an issue is when a sky wider than 1024 is used as a sky AND a regular wall texture
angle = (dup_viewangle + gr_xtoviewangle[0]); angle = (dup_viewangle + gr_xtoviewangle[0]);
dimensionmultiply = ((float)textures[skytexture]->width/256.0f); dimensionmultiply = ((float)textures[texturetranslation[skytexture]]->width/256.0f);
if (atransform.mirror) if (atransform.mirror)
{ {
@ -5616,7 +5616,7 @@ static void HWR_DrawSkyBackground(player_t *player)
angle = aimingangle; angle = aimingangle;
aspectratio = (float)vid.width/(float)vid.height; aspectratio = (float)vid.width/(float)vid.height;
dimensionmultiply = ((float)textures[skytexture]->height/(128.0f*aspectratio)); dimensionmultiply = ((float)textures[texturetranslation[skytexture]]->height/(128.0f*aspectratio));
angleturn = (((float)ANGLE_45-1.0f)*aspectratio)*dimensionmultiply; angleturn = (((float)ANGLE_45-1.0f)*aspectratio)*dimensionmultiply;
// Middle of the sky should always be at angle 0 // Middle of the sky should always be at angle 0

View file

@ -1366,54 +1366,24 @@ static void HU_drawMiniChat(void)
} }
// HU_DrawUpArrow
// You see, we don't have arrow graphics in 2.1 and I'm too lazy to include a 2 bytes file for it.
static void HU_DrawUpArrow(INT32 x, INT32 y, INT32 options)
{
// Ok I'm super lazy so let's make this as the worst draw function:
V_DrawFill(x+2, y, 1, 1, 103|options);
V_DrawFill(x+1, y+1, 3, 1, 103|options);
V_DrawFill(x, y+2, 5, 1, 103|options); // that's the yellow part, I swear
V_DrawFill(x+3, y, 1, 1, 26|options);
V_DrawFill(x+4, y+1, 1, 1, 26|options);
V_DrawFill(x+5, y+2, 1, 1, 26|options);
V_DrawFill(x, y+3, 6, 1, 26|options); // that's the black part. no racism intended. i swear.
}
// HU_DrawDownArrow
// Should we talk about anime waifus to pass the time? This feels retarded.
static void HU_DrawDownArrow(INT32 x, INT32 y, INT32 options)
{
// Ok I'm super lazy so let's make this as the worst draw function:
V_DrawFill(x, y, 6, 1, 26|options);
V_DrawFill(x, y+1, 5, 1, 26|options);
V_DrawFill(x+1, y+2, 3, 1, 26|options);
V_DrawFill(x+2, y+3, 1, 1, 26|options); // that's the black part. no racism intended. i swear.
V_DrawFill(x, y, 5, 1, 103|options);
V_DrawFill(x+1, y+1, 3, 1, 103|options);
V_DrawFill(x+2, y+2, 1, 1, 103|options); // that's the yellow part, I swear
}
// HU_DrawChatLog // HU_DrawChatLog
// TODO: fix dumb word wrapping issues // TODO: fix dumb word wrapping issues
static void HU_drawChatLog(INT32 offset) static void HU_drawChatLog(INT32 offset)
{ {
INT32 charwidth = 4, charheight = 6;
INT32 x = chatx+2, y, dx = 0, dy = 0;
UINT32 i = 0;
INT32 chat_topy, chat_bottomy;
boolean atbottom = false;
// before we do anything, make sure that our scroll position isn't "illegal"; // make sure that our scroll position isn't "illegal";
if (chat_scroll > chat_maxscroll) if (chat_scroll > chat_maxscroll)
chat_scroll = chat_maxscroll; chat_scroll = chat_maxscroll;
INT32 charwidth = 4, charheight = 6; y = chaty - offset*charheight - (chat_scroll*charheight) - cv_chatheight.value*charheight - 12 - (cv_kartspeedometer.value ? 16 : 0);
INT32 x = chatx+2, y = chaty - offset*charheight - (chat_scroll*charheight) - cv_chatheight.value*charheight - 12 - (cv_kartspeedometer.value ? 16 : 0), dx = 0, dy = 0; chat_topy = y + chat_scroll*charheight;
UINT32 i = 0; chat_bottomy = chat_topy + cv_chatheight.value*charheight;
INT32 chat_topy = y + chat_scroll*charheight;
INT32 chat_bottomy = chat_topy + cv_chatheight.value*charheight;
boolean atbottom = false;
V_DrawFillConsoleMap(chatx, chat_topy, cv_chatwidth.value, cv_chatheight.value*charheight +2, 239|V_SNAPTOBOTTOM|V_SNAPTOLEFT); // log box V_DrawFillConsoleMap(chatx, chat_topy, cv_chatwidth.value, cv_chatheight.value*charheight +2, 239|V_SNAPTOBOTTOM|V_SNAPTOLEFT); // log box
@ -1484,9 +1454,15 @@ static void HU_drawChatLog(INT32 offset)
// draw arrows to indicate that we can (or not) scroll. // draw arrows to indicate that we can (or not) scroll.
if (chat_scroll > 0) if (chat_scroll > 0)
HU_DrawUpArrow(chatx-8, ((justscrolledup) ? (chat_topy-1) : (chat_topy)), V_SNAPTOBOTTOM | V_SNAPTOLEFT); {
V_DrawCharacter(chatx-9, ((justscrolledup) ? (chat_topy-1) : (chat_topy)),
'\x1A' | V_SNAPTOBOTTOM | V_SNAPTOLEFT, false); // up arrow
}
if (chat_scroll < chat_maxscroll) if (chat_scroll < chat_maxscroll)
HU_DrawDownArrow(chatx-8, chat_bottomy-((justscrolleddown) ? 3 : 4), V_SNAPTOBOTTOM | V_SNAPTOLEFT); {
V_DrawCharacter(chatx-9, chat_bottomy-((justscrolleddown) ? 5 : 6),
'\x1B' | V_SNAPTOBOTTOM | V_SNAPTOLEFT, false); // down arrow
}
justscrolleddown = false; justscrolleddown = false;
justscrolledup = false; justscrolledup = false;

View file

@ -2213,16 +2213,25 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t angle
th->momx = FixedMul(finalspeed, FINECOSINE(an>>ANGLETOFINESHIFT)); th->momx = FixedMul(finalspeed, FINECOSINE(an>>ANGLETOFINESHIFT));
th->momy = FixedMul(finalspeed, FINESINE(an>>ANGLETOFINESHIFT)); th->momy = FixedMul(finalspeed, FINESINE(an>>ANGLETOFINESHIFT));
if (type == MT_ORBINAUT) switch (type)
{ {
if (source && source->player) case MT_ORBINAUT:
th->color = source->player->skincolor; if (source && source->player)
else th->color = source->player->skincolor;
th->color = SKINCOLOR_GREY; else
} th->color = SKINCOLOR_GREY;
else if (type == MT_JAWZ || type == MT_JAWZ_DUD) break;
{ case MT_JAWZ:
S_StartSound(th, th->info->activesound); if (source && source->player)
th->cvmem = source->player->skincolor;
else
th->cvmem = SKINCOLOR_RED;
//fallthrough
case MT_JAWZ_DUD:
S_StartSound(th, th->info->activesound);
break;
default:
break;
} }
x = x + P_ReturnThrustX(source, an, source->radius + th->radius); x = x + P_ReturnThrustX(source, an, source->radius + th->radius);

View file

@ -224,6 +224,7 @@ menu_t SR_MainDef, SR_UnlockChecklistDef;
// Misc. Main Menu // Misc. Main Menu
static void M_SinglePlayerMenu(INT32 choice); static void M_SinglePlayerMenu(INT32 choice);
static void M_Options(INT32 choice); static void M_Options(INT32 choice);
static void M_Manual(INT32 choice);
static void M_SelectableClearMenus(INT32 choice); static void M_SelectableClearMenus(INT32 choice);
static void M_Retry(INT32 choice); static void M_Retry(INT32 choice);
static void M_EndGame(INT32 choice); static void M_EndGame(INT32 choice);
@ -625,11 +626,19 @@ static menuitem_t MISC_ChangeLevelMenu[] =
static menuitem_t MISC_HelpMenu[] = static menuitem_t MISC_HelpMenu[] =
{ {
{IT_KEYHANDLER | IT_NOTHING, NULL, "HELPN01", M_HandleImageDef, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL00", M_HandleImageDef, 0},
{IT_KEYHANDLER | IT_NOTHING, NULL, "HELPN02", M_HandleImageDef, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL01", M_HandleImageDef, 1},
{IT_KEYHANDLER | IT_NOTHING, NULL, "HELPN03", M_HandleImageDef, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL02", M_HandleImageDef, 1},
{IT_KEYHANDLER | IT_NOTHING, NULL, "HELPM01", M_HandleImageDef, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL03", M_HandleImageDef, 1},
{IT_KEYHANDLER | IT_NOTHING, NULL, "HELPM02", M_HandleImageDef, 0}, {IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL04", M_HandleImageDef, 1},
{IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL05", M_HandleImageDef, 1},
{IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL06", M_HandleImageDef, 1},
{IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL07", M_HandleImageDef, 1},
{IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL08", M_HandleImageDef, 1},
{IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL09", M_HandleImageDef, 1},
{IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL10", M_HandleImageDef, 1},
{IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL11", M_HandleImageDef, 1},
{IT_KEYHANDLER | IT_NOTHING, NULL, "MANUAL12", M_HandleImageDef, 0},
}; };
// -------------------------------- // --------------------------------
@ -1057,8 +1066,9 @@ static menuitem_t OP_MainMenu[] =
{IT_SUBMENU|IT_STRING, NULL, "Gameplay Options...", &OP_GameOptionsDef, 90}, {IT_SUBMENU|IT_STRING, NULL, "Gameplay Options...", &OP_GameOptionsDef, 90},
{IT_SUBMENU|IT_STRING, NULL, "Server Options...", &OP_ServerOptionsDef, 100}, {IT_SUBMENU|IT_STRING, NULL, "Server Options...", &OP_ServerOptionsDef, 100},
{IT_CALL|IT_STRING, NULL, "Play Credits", M_Credits, 120}, {IT_CALL|IT_STRING, NULL, "Tricks & Secrets (F1)", M_Manual, 120},
{IT_SUBMENU|IT_STRING, NULL, "Erase Data...", &OP_EraseDataDef, 130}, {IT_CALL|IT_STRING, NULL, "Play Credits", M_Credits, 130},
{IT_SUBMENU|IT_STRING, NULL, "Erase Data...", &OP_EraseDataDef, 140},
}; };
static menuitem_t OP_ControlsMenu[] = static menuitem_t OP_ControlsMenu[] =
@ -1520,6 +1530,8 @@ static menuitem_t OP_ServerOptionsMenu[] =
{IT_STRING | IT_CVAR, NULL, "Karma Comeback", &cv_kartcomeback, 66}, {IT_STRING | IT_CVAR, NULL, "Karma Comeback", &cv_kartcomeback, 66},
};*/ };*/
#define ITEMTOGGLEBOTTOMRIGHT
static menuitem_t OP_MonitorToggleMenu[] = static menuitem_t OP_MonitorToggleMenu[] =
{ {
// Mostly handled by the drawing function. // Mostly handled by the drawing function.
@ -1532,10 +1544,10 @@ static menuitem_t OP_MonitorToggleMenu[] =
{IT_KEYHANDLER | IT_NOTHING, NULL, "Bananas x3", M_HandleMonitorToggles, KRITEM_TRIPLEBANANA}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Bananas x3", M_HandleMonitorToggles, KRITEM_TRIPLEBANANA},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Bananas x10", M_HandleMonitorToggles, KRITEM_TENFOLDBANANA}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Bananas x10", M_HandleMonitorToggles, KRITEM_TENFOLDBANANA},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Eggman Monitors", M_HandleMonitorToggles, KITEM_EGGMAN}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Eggman Monitors", M_HandleMonitorToggles, KITEM_EGGMAN},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinauts", M_HandleMonitorToggles, KITEM_ORBINAUT}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinauts", M_HandleMonitorToggles, KITEM_ORBINAUT},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinauts x3", M_HandleMonitorToggles, KRITEM_TRIPLEORBINAUT}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinauts x3", M_HandleMonitorToggles, KRITEM_TRIPLEORBINAUT},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinauts x4", M_HandleMonitorToggles, KRITEM_QUADORBINAUT}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Orbinauts x4", M_HandleMonitorToggles, KRITEM_QUADORBINAUT},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Mines", M_HandleMonitorToggles, KITEM_MINE}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Mines", M_HandleMonitorToggles, KITEM_MINE},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Jawz", M_HandleMonitorToggles, KITEM_JAWZ}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Jawz", M_HandleMonitorToggles, KITEM_JAWZ},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Jawz x2", M_HandleMonitorToggles, KRITEM_DUALJAWZ}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Jawz x2", M_HandleMonitorToggles, KRITEM_DUALJAWZ},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Ballhogs", M_HandleMonitorToggles, KITEM_BALLHOG}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Ballhogs", M_HandleMonitorToggles, KITEM_BALLHOG},
@ -1546,7 +1558,10 @@ static menuitem_t OP_MonitorToggleMenu[] =
{IT_KEYHANDLER | IT_NOTHING, NULL, "Thunder Shields", M_HandleMonitorToggles, KITEM_THUNDERSHIELD}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Thunder Shields", M_HandleMonitorToggles, KITEM_THUNDERSHIELD},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Hyudoros", M_HandleMonitorToggles, KITEM_HYUDORO}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Hyudoros", M_HandleMonitorToggles, KITEM_HYUDORO},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Pogo Springs", M_HandleMonitorToggles, KITEM_POGOSPRING}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Pogo Springs", M_HandleMonitorToggles, KITEM_POGOSPRING},
{IT_KEYHANDLER | IT_NOTHING, NULL, "Kitchen Sinks", M_HandleMonitorToggles, KITEM_KITCHENSINK}, {IT_KEYHANDLER | IT_NOTHING, NULL, "Kitchen Sinks", M_HandleMonitorToggles, KITEM_KITCHENSINK},
#ifdef ITEMTOGGLEBOTTOMRIGHT
{IT_KEYHANDLER | IT_NOTHING, NULL, "---", M_HandleMonitorToggles, 255},
#endif
}; };
// ========================================================================== // ==========================================================================
@ -2482,7 +2497,7 @@ boolean M_Responder(event_t *ev)
if (modeattacking) if (modeattacking)
return true; return true;
M_StartControlPanel(); M_StartControlPanel();
currentMenu = &MISC_HelpDef; M_Manual(INT32_MAX);
itemOn = 0; itemOn = 0;
return true; return true;
@ -4169,6 +4184,9 @@ static void M_StopMessage(INT32 choice)
// You can even put multiple images in one menu! // You can even put multiple images in one menu!
static void M_DrawImageDef(void) static void M_DrawImageDef(void)
{ {
// this is probably what the V_DrawFixedPatch screen-fill bullshit was for, right
//V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, 31); -- never mind, screen fade
// Grr. Need to autodetect for pic_ts. // Grr. Need to autodetect for pic_ts.
pic_t *pictest = (pic_t *)W_CachePatchName(currentMenu->menuitems[itemOn].text,PU_CACHE); pic_t *pictest = (pic_t *)W_CachePatchName(currentMenu->menuitems[itemOn].text,PU_CACHE);
if (!pictest->zero) if (!pictest->zero)
@ -4182,41 +4200,59 @@ static void M_DrawImageDef(void)
V_DrawSmallScaledPatch(0,0,0,patch); V_DrawSmallScaledPatch(0,0,0,patch);
} }
if (currentMenu->numitems > 1) if (currentMenu->menuitems[itemOn].alphaKey)
V_DrawString(0,192,V_TRANSLUCENT, va("PAGE %d of %hd", itemOn+1, currentMenu->numitems)); {
V_DrawString(2,BASEVIDHEIGHT-10, V_YELLOWMAP, va("%d", (itemOn<<1)-1)); // intentionally not highlightflags, unlike below
V_DrawRightAlignedString(BASEVIDWIDTH-2,BASEVIDHEIGHT-10, V_YELLOWMAP, va("%d", itemOn<<1)); // ditto
}
else
{
INT32 x = ((itemOn ? 3 : 1)*BASEVIDWIDTH)>>2, y = (BASEVIDHEIGHT>>1) - 4;
V_DrawCenteredString(x, y-10, highlightflags, "USE ARROW KEYS");
V_DrawCharacter(x - 10 - (skullAnimCounter/5), y,
'\x1C' | highlightflags, false); // left arrow
V_DrawCharacter(x + 2 + (skullAnimCounter/5), y,
'\x1D' | highlightflags, false); // right arrow
V_DrawCenteredString(x, y+10, highlightflags, "TO LEAF THROUGH");
}
} }
// Handles the ImageDefs. Just a specialized function that // Handles the ImageDefs. Just a specialized function that
// uses left and right movement. // uses left and right movement.
static void M_HandleImageDef(INT32 choice) static void M_HandleImageDef(INT32 choice)
{ {
boolean exitmenu = false;
switch (choice) switch (choice)
{ {
case KEY_RIGHTARROW: case KEY_RIGHTARROW:
if (currentMenu->numitems == 1)
break;
S_StartSound(NULL, sfx_menu1);
if (itemOn >= (INT16)(currentMenu->numitems-1)) if (itemOn >= (INT16)(currentMenu->numitems-1))
itemOn = 0; break;
else itemOn++; S_StartSound(NULL, sfx_menu1);
itemOn++;
break; break;
case KEY_LEFTARROW: case KEY_LEFTARROW:
if (currentMenu->numitems == 1) if (!itemOn)
break; break;
S_StartSound(NULL, sfx_menu1); S_StartSound(NULL, sfx_menu1);
if (!itemOn) itemOn--;
itemOn = currentMenu->numitems - 1;
else itemOn--;
break; break;
case KEY_ESCAPE: case KEY_ESCAPE:
case KEY_ENTER: case KEY_ENTER:
M_ClearMenus(true); exitmenu = true;
break; break;
} }
if (exitmenu)
{
if (currentMenu->prevMenu)
M_SetupNextMenu(currentMenu->prevMenu);
else
M_ClearMenus(true);
}
} }
// ====================== // ======================
@ -4325,13 +4361,21 @@ static void M_Options(INT32 choice)
OP_MainMenu[5].status = OP_MainMenu[6].status = (Playing() && !(server || IsPlayerAdmin(consoleplayer))) ? (IT_GRAYEDOUT) : (IT_STRING|IT_SUBMENU); OP_MainMenu[5].status = OP_MainMenu[6].status = (Playing() && !(server || IsPlayerAdmin(consoleplayer))) ? (IT_GRAYEDOUT) : (IT_STRING|IT_SUBMENU);
// if the player is playing _at all_, disable the erase data & credits options // if the player is playing _at all_, disable the erase data & credits options
OP_MainMenu[7].status = (Playing()) ? (IT_GRAYEDOUT) : (IT_STRING|IT_CALL); OP_MainMenu[8].status = (Playing()) ? (IT_GRAYEDOUT) : (IT_STRING|IT_CALL);
OP_MainMenu[8].status = (Playing()) ? (IT_GRAYEDOUT) : (IT_STRING|IT_SUBMENU); OP_MainMenu[9].status = (Playing()) ? (IT_GRAYEDOUT) : (IT_STRING|IT_SUBMENU);
OP_MainDef.prevMenu = currentMenu; OP_MainDef.prevMenu = currentMenu;
M_SetupNextMenu(&OP_MainDef); M_SetupNextMenu(&OP_MainDef);
} }
static void M_Manual(INT32 choice)
{
(void)choice;
MISC_HelpDef.prevMenu = (choice == INT32_MAX ? NULL : currentMenu);
M_SetupNextMenu(&MISC_HelpDef);
}
static void M_RetryResponse(INT32 ch) static void M_RetryResponse(INT32 ch)
{ {
if (ch != 'y' && ch != KEY_ENTER) if (ch != 'y' && ch != KEY_ENTER)
@ -5519,7 +5563,8 @@ static void M_DrawStatsMaps(int location)
boolean dotopname = true, dobottomarrow = (location < statsMax); boolean dotopname = true, dobottomarrow = (location < statsMax);
if (location) if (location)
V_DrawString(10, y-(skullAnimCounter/5), highlightflags, "\x1A"); V_DrawCharacter(10, y-(skullAnimCounter/5),
'\x1A' | highlightflags, false); // up arrow
while (statsMapList[++i] != -1) while (statsMapList[++i] != -1)
{ {
@ -5601,7 +5646,8 @@ static void M_DrawStatsMaps(int location)
} }
bottomarrow: bottomarrow:
if (dobottomarrow) if (dobottomarrow)
V_DrawString(10, y-8 + (skullAnimCounter/5), highlightflags, "\x1B"); V_DrawCharacter(10, y-8 + (skullAnimCounter/5),
'\x1B' | highlightflags, false); // up arrow
} }
static void M_DrawLevelStats(void) static void M_DrawLevelStats(void)
@ -8479,8 +8525,9 @@ static void M_DrawMonitorToggles(void)
//const INT32 row = itemOn%height; //const INT32 row = itemOn%height;
INT32 leftdraw, rightdraw, totaldraw; INT32 leftdraw, rightdraw, totaldraw;
INT32 x = currentMenu->x, y = currentMenu->y+(spacing/4); INT32 x = currentMenu->x, y = currentMenu->y+(spacing/4);
INT32 onx = 0, ony = 0;
consvar_t *cv; consvar_t *cv;
INT32 i; INT32 i, translucent, drawnum;
M_DrawMenuTitle(); M_DrawMenuTitle();
@ -8508,25 +8555,30 @@ static void M_DrawMonitorToggles(void)
for (j = 0; j < height; j++) for (j = 0; j < height; j++)
{ {
const INT32 thisitem = (i*height)+j; const INT32 thisitem = (i*height)+j;
const boolean selected = (thisitem == itemOn);
INT32 drawnum = 0; INT32 drawnum = 0;
INT32 translucent = 0;
if (thisitem >= currentMenu->numitems) if (thisitem >= currentMenu->numitems)
continue; continue;
if (thisitem == itemOn)
{
onx = x;
ony = y;
y += spacing;
continue;
}
#ifdef ITEMTOGGLEBOTTOMRIGHT
if (currentMenu->menuitems[thisitem].alphaKey == 255)
{
V_DrawScaledPatch(x, y, V_TRANSLUCENT, W_CachePatchName("K_ISBG", PU_CACHE));
continue;
}
#endif
if (currentMenu->menuitems[thisitem].alphaKey == 0) if (currentMenu->menuitems[thisitem].alphaKey == 0)
{ {
if (selected) V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISBG", PU_CACHE));
{ V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISTOGL", PU_CACHE));
V_DrawScaledPatch(x-1, y-2, 0, W_CachePatchName("K_ITBG", PU_CACHE));
V_DrawScaledPatch(x-1, y-2, 0, W_CachePatchName("K_ITTOGL", PU_CACHE));
}
else
{
V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISBG", PU_CACHE));
V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISTOGL", PU_CACHE));
}
continue; continue;
} }
@ -8543,53 +8595,32 @@ static void M_DrawMonitorToggles(void)
drawnum = 3; drawnum = 3;
break; break;
case KRITEM_TRIPLEORBINAUT: case KRITEM_TRIPLEORBINAUT:
if (!selected) drawnum = 3;
drawnum = 3;
break; break;
case KRITEM_QUADORBINAUT: case KRITEM_QUADORBINAUT:
if (!selected) drawnum = 4;
drawnum = 4;
break; break;
case KRITEM_TENFOLDBANANA: case KRITEM_TENFOLDBANANA:
drawnum = 10; drawnum = 10;
break; break;
default: default:
drawnum = 0;
break; break;
} }
if (selected) if (cv->value)
{ V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISBG", PU_CACHE));
if (cv->value) else
V_DrawScaledPatch(x-1, y-2, 0, W_CachePatchName("K_ITBG", PU_CACHE)); V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISBGD", PU_CACHE));
else
V_DrawScaledPatch(x-1, y-2, 0, W_CachePatchName("K_ITBGD", PU_CACHE));
if (drawnum != 0) if (drawnum != 0)
{ {
V_DrawScaledPatch(x-1, y-2, 0, W_CachePatchName("K_ITMUL", PU_CACHE)); V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISMUL", PU_CACHE));
V_DrawScaledPatch(x-1, y-2, translucent, W_CachePatchName(K_GetItemPatch(currentMenu->menuitems[thisitem].alphaKey, !selected), PU_CACHE)); V_DrawScaledPatch(x, y, translucent, W_CachePatchName(K_GetItemPatch(currentMenu->menuitems[thisitem].alphaKey, true), PU_CACHE));
V_DrawScaledPatch(x+27, y+39, translucent, W_CachePatchName("K_ITX", PU_CACHE)); V_DrawString(x+24, y+31, V_ALLOWLOWERCASE|translucent, va("x%d", drawnum));
V_DrawKartString(x+37, y+34, translucent, va("%d", drawnum));
}
else
V_DrawScaledPatch(x-1, y-2, translucent, W_CachePatchName(K_GetItemPatch(currentMenu->menuitems[thisitem].alphaKey, !selected), PU_CACHE));
} }
else else
{ V_DrawScaledPatch(x, y, translucent, W_CachePatchName(K_GetItemPatch(currentMenu->menuitems[thisitem].alphaKey, true), PU_CACHE));
if (cv->value)
V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISBG", PU_CACHE));
else
V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISBGD", PU_CACHE));
if (drawnum != 0)
{
V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISMUL", PU_CACHE));
V_DrawScaledPatch(x, y, translucent, W_CachePatchName(K_GetItemPatch(currentMenu->menuitems[thisitem].alphaKey, !selected), PU_CACHE));
V_DrawString(x+24, y+31, V_ALLOWLOWERCASE|translucent, va("x%d", drawnum));
}
else
V_DrawScaledPatch(x, y, translucent, W_CachePatchName(K_GetItemPatch(currentMenu->menuitems[thisitem].alphaKey, !selected), PU_CACHE));
}
y += spacing; y += spacing;
} }
@ -8598,6 +8629,56 @@ static void M_DrawMonitorToggles(void)
y = currentMenu->y+(spacing/4); y = currentMenu->y+(spacing/4);
} }
{
#ifdef ITEMTOGGLEBOTTOMRIGHT
if (currentMenu->menuitems[itemOn].alphaKey == 255)
V_DrawScaledPatch(onx-1, ony-2, V_TRANSLUCENT, W_CachePatchName("K_ITBG", PU_CACHE));
else
#endif
if (currentMenu->menuitems[itemOn].alphaKey == 0)
{
V_DrawScaledPatch(onx-1, ony-2, 0, W_CachePatchName("K_ITBG", PU_CACHE));
V_DrawScaledPatch(onx-1, ony-2, 0, W_CachePatchName("K_ITTOGL", PU_CACHE));
}
else
{
cv = kartitemcvs[currentMenu->menuitems[itemOn].alphaKey-1];
translucent = (cv->value ? 0 : V_TRANSLUCENT);
switch (currentMenu->menuitems[itemOn].alphaKey)
{
case KRITEM_DUALJAWZ:
drawnum = 2;
break;
case KRITEM_TRIPLESNEAKER:
case KRITEM_TRIPLEBANANA:
drawnum = 3;
break;
case KRITEM_TENFOLDBANANA:
drawnum = 10;
break;
default:
drawnum = 0;
break;
}
if (cv->value)
V_DrawScaledPatch(onx-1, ony-2, 0, W_CachePatchName("K_ITBG", PU_CACHE));
else
V_DrawScaledPatch(onx-1, ony-2, 0, W_CachePatchName("K_ITBGD", PU_CACHE));
if (drawnum != 0)
{
V_DrawScaledPatch(onx-1, ony-2, 0, W_CachePatchName("K_ITMUL", PU_CACHE));
V_DrawScaledPatch(onx-1, ony-2, translucent, W_CachePatchName(K_GetItemPatch(currentMenu->menuitems[itemOn].alphaKey, false), PU_CACHE));
V_DrawScaledPatch(onx+27, ony+39, translucent, W_CachePatchName("K_ITX", PU_CACHE));
V_DrawKartString(onx+37, ony+34, translucent, va("%d", drawnum));
}
else
V_DrawScaledPatch(onx-1, ony-2, translucent, W_CachePatchName(K_GetItemPatch(currentMenu->menuitems[itemOn].alphaKey, false), PU_CACHE));
}
}
V_DrawCenteredString(BASEVIDWIDTH/2, currentMenu->y, highlightflags, va("* %s *", currentMenu->menuitems[itemOn].text)); V_DrawCenteredString(BASEVIDWIDTH/2, currentMenu->y, highlightflags, va("* %s *", currentMenu->menuitems[itemOn].text));
} }
@ -8607,6 +8688,7 @@ static void M_HandleMonitorToggles(INT32 choice)
INT32 column = itemOn/height, row = itemOn%height; INT32 column = itemOn/height, row = itemOn%height;
INT16 next; INT16 next;
UINT8 i; UINT8 i;
boolean exitmenu = false;
switch (choice) switch (choice)
{ {
@ -8655,6 +8737,11 @@ static void M_HandleMonitorToggles(INT32 choice)
break; break;
case KEY_ENTER: case KEY_ENTER:
#ifdef ITEMTOGGLEBOTTOMRIGHT
if (currentMenu->menuitems[itemOn].alphaKey == 255)
S_StartSound(NULL, sfx_lose);
else
#endif
if (currentMenu->menuitems[itemOn].alphaKey == 0) if (currentMenu->menuitems[itemOn].alphaKey == 0)
{ {
INT32 v = cv_sneaker.value; INT32 v = cv_sneaker.value;
@ -8673,9 +8760,17 @@ static void M_HandleMonitorToggles(INT32 choice)
break; break;
case KEY_ESCAPE: case KEY_ESCAPE:
M_ClearMenus(true); exitmenu = true;
break; break;
} }
if (exitmenu)
{
if (currentMenu->prevMenu)
M_SetupNextMenu(currentMenu->prevMenu);
else
M_ClearMenus(true);
}
} }
// ========= // =========
@ -8793,7 +8888,6 @@ static void M_HandleFogColor(INT32 choice)
break; break;
case KEY_ESCAPE: case KEY_ESCAPE:
S_StartSound(NULL, sfx_menu1);
exitmenu = true; exitmenu = true;
break; break;

View file

@ -8182,7 +8182,7 @@ void A_JawzChase(mobj_t *actor)
ret = P_SpawnMobj(actor->tracer->x, actor->tracer->y, actor->tracer->z, MT_PLAYERRETICULE); ret = P_SpawnMobj(actor->tracer->x, actor->tracer->y, actor->tracer->z, MT_PLAYERRETICULE);
P_SetTarget(&ret->target, actor->tracer); P_SetTarget(&ret->target, actor->tracer);
ret->frame |= ((leveltime % 10) / 2) + 5; ret->frame |= ((leveltime % 10) / 2) + 5;
ret->color = actor->target->player->skincolor; ret->color = actor->cvmem;
P_Thrust(actor, R_PointToAngle2(actor->x, actor->y, actor->tracer->x, actor->tracer->y), actor->info->speed); P_Thrust(actor, R_PointToAngle2(actor->x, actor->y, actor->tracer->x, actor->tracer->y), actor->info->speed);
return; return;

View file

@ -720,7 +720,7 @@ void R_DrawPlanes(void)
dc_iscale = FixedMul(skyscale, FINECOSINE(xtoviewangle[x]>>ANGLETOFINESHIFT)); dc_iscale = FixedMul(skyscale, FINECOSINE(xtoviewangle[x]>>ANGLETOFINESHIFT));
dc_x = x; dc_x = x;
dc_source = dc_source =
R_GetColumn(skytexture, R_GetColumn(texturetranslation[skytexture],
angle); angle);
wallcolfunc(); wallcolfunc();
} }