mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into more-conversions
This commit is contained in:
commit
2e395c8b0f
54 changed files with 1130 additions and 1197 deletions
|
|
@ -1949,10 +1949,11 @@ void CON_DrawLoadBar(void)
|
|||
|
||||
barwidth = (BASEVIDWIDTH * con_startup_loadprogress) / LOADED_ALLDONE;
|
||||
V_DrawFill(0, BASEVIDHEIGHT - barheight, barwidth, barheight, 0);
|
||||
#ifdef DEVELOP
|
||||
|
||||
if (con_startup_loadprogress <= LOADED_ALLDONE)
|
||||
V_DrawString(4, BASEVIDHEIGHT - (barheight + 8 + 4), 0, CON_LoadingStrings[con_startup_loadprogress]);
|
||||
#endif
|
||||
{
|
||||
V_DrawString(4, BASEVIDHEIGHT - (barheight + 8 + 4), V_FORCEUPPERCASE, CON_LoadingStrings[con_startup_loadprogress]);
|
||||
}
|
||||
|
||||
Unlock_state();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1025,6 +1025,7 @@ void readlevelheader(MYFILE *f, char * name)
|
|||
word2 = tmp += 2;
|
||||
i = atoi(word2); // used for numerical settings
|
||||
|
||||
// The following support mixed/lower case.
|
||||
|
||||
if (fastcmp(word, "LEVELNAME"))
|
||||
{
|
||||
|
|
@ -1032,7 +1033,14 @@ void readlevelheader(MYFILE *f, char * name)
|
|||
sizeof(mapheaderinfo[num]->lvlttl), va("Level header %d: levelname", num));
|
||||
continue;
|
||||
}
|
||||
// CHEAP HACK: move this over here for lowercase subtitles
|
||||
|
||||
if (fastcmp(word, "ZONETITLE"))
|
||||
{
|
||||
deh_strlcpy(mapheaderinfo[num]->zonttl, word2,
|
||||
sizeof(mapheaderinfo[num]->zonttl), va("Level header %d: zonetitle", num));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (fastcmp(word, "SUBTITLE"))
|
||||
{
|
||||
deh_strlcpy(mapheaderinfo[num]->subttl, word2,
|
||||
|
|
@ -1127,11 +1135,6 @@ void readlevelheader(MYFILE *f, char * name)
|
|||
}
|
||||
|
||||
// Strings that can be truncated
|
||||
else if (fastcmp(word, "ZONETITLE"))
|
||||
{
|
||||
deh_strlcpy(mapheaderinfo[num]->zonttl, word2,
|
||||
sizeof(mapheaderinfo[num]->zonttl), va("Level header %d: zonetitle", num));
|
||||
}
|
||||
else if (fastcmp(word, "RELEVANTSKIN"))
|
||||
{
|
||||
deh_strlcpy(mapheaderinfo[num]->relevantskin, word2,
|
||||
|
|
|
|||
|
|
@ -3303,6 +3303,7 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
"S_INSTAWHIP_RECHARGE2",
|
||||
"S_INSTAWHIP_RECHARGE3",
|
||||
"S_INSTAWHIP_RECHARGE4",
|
||||
"S_INSTAWHIP_REJECT",
|
||||
"S_BLOCKRING",
|
||||
"S_BLOCKBODY",
|
||||
|
||||
|
|
@ -4605,6 +4606,8 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
|
|||
"S_HITLAG_6",
|
||||
"S_HITLAG_8",
|
||||
"S_HITLAG_9",
|
||||
"S_HITLAG_10",
|
||||
|
||||
|
||||
// Broly Ki Orb
|
||||
"S_BROLY1",
|
||||
|
|
@ -5407,6 +5410,7 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
|
|||
|
||||
"MT_INSTAWHIP",
|
||||
"MT_INSTAWHIP_RECHARGE",
|
||||
"MT_INSTAWHIP_REJECT",
|
||||
"MT_BLOCKRING",
|
||||
"MT_BLOCKBODY",
|
||||
|
||||
|
|
@ -6862,7 +6866,7 @@ struct int_const_s const INT_CONST[] = {
|
|||
{"V_REVERSESUBTRACT",V_REVERSESUBTRACT},
|
||||
{"V_MODULATE",V_MODULATE},
|
||||
{"V_OVERLAY",V_OVERLAY},
|
||||
{"V_ALLOWLOWERCASE",V_ALLOWLOWERCASE},
|
||||
{"V_FORCEUPPERCASE",V_FORCEUPPERCASE},
|
||||
{"V_FLIP",V_FLIP},
|
||||
{"V_VFLIP",V_VFLIP},
|
||||
{"V_SNAPTOTOP",V_SNAPTOTOP},
|
||||
|
|
|
|||
|
|
@ -755,12 +755,12 @@ void F_CreditDrawer(void)
|
|||
break;
|
||||
case 2:
|
||||
if (y>>FRACBITS > -10)
|
||||
V_DrawStringAtFixed((BASEVIDWIDTH-V_StringWidth(&credits[i][1], V_ALLOWLOWERCASE|V_YELLOWMAP))<<FRACBITS>>1, y, V_ALLOWLOWERCASE|V_YELLOWMAP, &credits[i][1]);
|
||||
V_DrawStringAtFixed((BASEVIDWIDTH-V_StringWidth(&credits[i][1], V_YELLOWMAP))<<FRACBITS>>1, y, V_YELLOWMAP, &credits[i][1]);
|
||||
y += 12<<FRACBITS;
|
||||
break;
|
||||
default:
|
||||
if (y>>FRACBITS > -10)
|
||||
V_DrawStringAtFixed(32<<FRACBITS, y, V_ALLOWLOWERCASE, credits[i]);
|
||||
V_DrawStringAtFixed(32<<FRACBITS, y, 0, credits[i]);
|
||||
y += 12<<FRACBITS;
|
||||
break;
|
||||
}
|
||||
|
|
@ -1555,31 +1555,31 @@ void F_VersionDrawer(void)
|
|||
}
|
||||
if (customversionstring[0] != '\0')
|
||||
{
|
||||
addtext(V_ALLOWLOWERCASE, customversionstring);
|
||||
addtext(0, customversionstring);
|
||||
addtext(0, "Mod version:");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Development -- show revision / branch info
|
||||
#if defined(TESTERS)
|
||||
addtext(V_ALLOWLOWERCASE|V_SKYMAP, "Tester client");
|
||||
addtext(V_ALLOWLOWERCASE|V_TRANSLUCENT, va("%s", compdate));
|
||||
addtext(V_SKYMAP, "Tester client");
|
||||
addtext(V_TRANSLUCENT, va("%s", compdate));
|
||||
#elif defined(HOSTTESTERS)
|
||||
addtext(V_ALLOWLOWERCASE|V_REDMAP, "Netgame host for testers");
|
||||
addtext(V_ALLOWLOWERCASE|V_TRANSLUCENT, va("%s", compdate));
|
||||
addtext(V_REDMAP, "Netgame host for testers");
|
||||
addtext(V_TRANSLUCENT, va("%s", compdate));
|
||||
#elif defined(DEVELOP)
|
||||
addtext(V_ALLOWLOWERCASE|V_TRANSLUCENT, va("%s %s", comprevision, compnote));
|
||||
addtext(V_ALLOWLOWERCASE|V_TRANSLUCENT, D_GetFancyBranchName());
|
||||
addtext(V_TRANSLUCENT, va("%s %s", comprevision, compnote));
|
||||
addtext(V_TRANSLUCENT, D_GetFancyBranchName());
|
||||
#else // Regular build
|
||||
addtext(V_ALLOWLOWERCASE|V_TRANSLUCENT, va("%s", VERSIONSTRING));
|
||||
addtext(V_TRANSLUCENT, va("%s", VERSIONSTRING));
|
||||
#endif
|
||||
if (compoptimized)
|
||||
{
|
||||
addtext(V_ALLOWLOWERCASE|V_TRANSLUCENT, va("%s build", comptype));
|
||||
addtext(V_TRANSLUCENT, va("%s build", comptype));
|
||||
}
|
||||
else
|
||||
{
|
||||
addtext(V_ALLOWLOWERCASE|V_ORANGEMAP, va("%s build (no optimizations)", comptype));
|
||||
addtext(V_ORANGEMAP, va("%s build (no optimizations)", comptype));
|
||||
}
|
||||
|
||||
if (compuncommitted)
|
||||
|
|
@ -1705,15 +1705,15 @@ void F_TitleScreenDrawer(void)
|
|||
V_DrawSmallScaledPatch(84, 36, transval<<V_ALPHASHIFT, ttkflash);
|
||||
}
|
||||
*/
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 64, V_ALLOWLOWERCASE, "Dr. Robotnik's Ring Racers v2.0");
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 64, 0, "Dr. Robotnik's Ring Racers v2.0");
|
||||
|
||||
#ifdef DEVELOP
|
||||
#if defined(TESTERS)
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 96, V_SKYMAP|V_ALLOWLOWERCASE, "Tester EXE");
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 96, V_SKYMAP, "Tester EXE");
|
||||
#elif defined(HOSTTESTERS)
|
||||
V_DrawCenteredThinString(BASEVIDWIDTH/2, 96, V_REDMAP|V_ALLOWLOWERCASE, "Tester netgame host EXE");
|
||||
V_DrawCenteredThinString(BASEVIDWIDTH/2, 96, V_REDMAP, "Tester netgame host EXE");
|
||||
#else
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 96, V_ALLOWLOWERCASE, "Development EXE");
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 96, 0, "Development EXE");
|
||||
#endif
|
||||
#endif
|
||||
break;
|
||||
|
|
@ -2123,7 +2123,7 @@ void F_CutsceneDrawer(void)
|
|||
F_RunWipe(wipe_intro_toblack, cutscenes[cutnum]->scene[scenenum].fadeoutid, true, NULL, false, false);
|
||||
}
|
||||
|
||||
V_DrawString(textxpos, textypos, V_ALLOWLOWERCASE, cutscene_disptext);
|
||||
V_DrawString(textxpos, textypos, 0, cutscene_disptext);
|
||||
}
|
||||
|
||||
void F_CutsceneTicker(void)
|
||||
|
|
@ -2281,7 +2281,23 @@ static void F_PreparePageText(char *pagetext)
|
|||
|
||||
if (promptpagetext)
|
||||
Z_Free(promptpagetext);
|
||||
promptpagetext = (pagetext && pagetext[0]) ? V_WordWrap(textx, textr, 0, pagetext) : Z_StrDup("");
|
||||
if (pagetext && pagetext[0])
|
||||
{
|
||||
promptpagetext = V_ScaledWordWrap(
|
||||
(textx - textr)<<FRACBITS,
|
||||
FRACUNIT, FRACUNIT, FRACUNIT,
|
||||
0, HU_FONT,
|
||||
pagetext
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// The original code I was replacing did this,
|
||||
// And I'm not really interested enough to figure out
|
||||
// if this is strictly necessary in the long term or
|
||||
// if it was just an anti-crash doohickey. ~toast 110723
|
||||
promptpagetext = Z_StrDup("");
|
||||
}
|
||||
|
||||
F_NewCutscene(promptpagetext);
|
||||
cutscene_textspeed = textprompts[cutnum]->page[scenenum].textspeed ? textprompts[cutnum]->page[scenenum].textspeed : TICRATE/5;
|
||||
|
|
@ -2628,12 +2644,12 @@ void F_TextPromptDrawer(void)
|
|||
}
|
||||
|
||||
// Draw text
|
||||
V_DrawString(textx, texty, (V_SNAPTOBOTTOM|V_ALLOWLOWERCASE), cutscene_disptext);
|
||||
V_DrawString(textx, texty, V_SNAPTOBOTTOM, cutscene_disptext);
|
||||
|
||||
// Draw name
|
||||
// Don't use V_YELLOWMAP here so that the name color can be changed with control codes
|
||||
if (textprompts[cutnum]->page[scenenum].name[0])
|
||||
V_DrawString(textx, namey, (V_SNAPTOBOTTOM|V_ALLOWLOWERCASE), textprompts[cutnum]->page[scenenum].name);
|
||||
V_DrawString(textx, namey, V_SNAPTOBOTTOM, textprompts[cutnum]->page[scenenum].name);
|
||||
|
||||
// Draw chevron
|
||||
if (promptblockcontrols && !timetonext)
|
||||
|
|
|
|||
423
src/hu_stuff.c
423
src/hu_stuff.c
|
|
@ -255,6 +255,10 @@ void HU_Init(void)
|
|||
PR ("STCFN");
|
||||
REG;
|
||||
|
||||
|
||||
PR ("MNUFN");
|
||||
REG;
|
||||
|
||||
PR ("TNYFN");
|
||||
REG;
|
||||
|
||||
|
|
@ -868,7 +872,7 @@ void HU_TickSongCredits(void)
|
|||
|
||||
if (cursongcredit.anim > 0)
|
||||
{
|
||||
INT32 len = V_ThinStringWidth(cursongcredit.text, V_ALLOWLOWERCASE|V_6WIDTHSPACE);
|
||||
INT32 len = V_ThinStringWidth(cursongcredit.text, 0);
|
||||
fixed_t destx = (len+7) * FRACUNIT;
|
||||
|
||||
if (cursongcredit.trans > 0)
|
||||
|
|
@ -1266,57 +1270,16 @@ boolean HU_Responder(event_t *ev)
|
|||
//======================================================================
|
||||
|
||||
// Precompile a wordwrapped string to any given width.
|
||||
// This is a muuuch better method than V_WORDWRAP.
|
||||
// again stolen and modified a bit from video.c, don't mind me, will need to rearrange this one day.
|
||||
// this one is simplified for the chat drawer.
|
||||
static char *CHAT_WordWrap(INT32 x, INT32 w, INT32 option, const char *string)
|
||||
// Now a wrapper for the chat drawer.
|
||||
static char *CHAT_WordWrap(INT32 w, fixed_t scale, INT32 option, const char *string)
|
||||
{
|
||||
INT32 c;
|
||||
size_t chw, i, lastusablespace = 0;
|
||||
size_t slen;
|
||||
char *newstring = Z_StrDup(string);
|
||||
INT32 spacewidth = (vid.width < 640) ? 8 : 4, charwidth = (vid.width < 640) ? 8 : 4;
|
||||
|
||||
slen = strlen(string);
|
||||
x = 0;
|
||||
|
||||
for (i = 0; i < slen; ++i)
|
||||
{
|
||||
c = newstring[i];
|
||||
if ((UINT8)c >= 0x80 && (UINT8)c <= 0x8F) //color parsing! -Inuyasha 2.16.09
|
||||
continue;
|
||||
|
||||
if (c == '\n')
|
||||
{
|
||||
x = 0;
|
||||
lastusablespace = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!(option & V_ALLOWLOWERCASE))
|
||||
c = toupper(c);
|
||||
c -= HU_FONTSTART;
|
||||
|
||||
if (c < 0 || c >= HU_FONTSIZE || !fontv[HU_FONT].font[c])
|
||||
{
|
||||
chw = spacewidth;
|
||||
lastusablespace = i;
|
||||
}
|
||||
else
|
||||
chw = charwidth;
|
||||
|
||||
x += chw;
|
||||
|
||||
if (lastusablespace != 0 && x > w)
|
||||
{
|
||||
//CONS_Printf("Wrap at index %d\n", i);
|
||||
newstring[lastusablespace] = '\n';
|
||||
i = lastusablespace+1;
|
||||
lastusablespace = 0;
|
||||
x = 0;
|
||||
}
|
||||
}
|
||||
return newstring;
|
||||
return V_ScaledWordWrap(
|
||||
w << FRACBITS,
|
||||
scale, FRACUNIT, FRACUNIT,
|
||||
option,
|
||||
HU_FONT,
|
||||
string
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1331,11 +1294,9 @@ INT16 chatx = 13, chaty = 169; // let's use this as our coordinates
|
|||
static void HU_drawMiniChat(void)
|
||||
{
|
||||
INT32 x = chatx+2;
|
||||
INT32 charwidth = 4, charheight = 6;
|
||||
const INT32 charheight = (vid.width < 640) ? 12 : 6;
|
||||
INT32 boxw = cv_chatwidth.value;
|
||||
INT32 dx = 0, dy = 0;
|
||||
size_t i = chat_nummsg_min;
|
||||
boolean prev_linereturn = false; // a hack to prevent double \n while I have no idea why they happen in the first place.
|
||||
|
||||
INT32 msglines = 0;
|
||||
// process all messages once without rendering anything or doing anything fancy so that we know how many lines each message has...
|
||||
|
|
@ -1347,50 +1308,23 @@ static void HU_drawMiniChat(void)
|
|||
if (r_splitscreen > 1)
|
||||
boxw = max(64, boxw/2);
|
||||
|
||||
for (; i>0; i--)
|
||||
const fixed_t scale = (vid.width < 640) ? FRACUNIT : FRACUNIT/2;
|
||||
|
||||
for (; i > 0; i--)
|
||||
{
|
||||
char *msg = CHAT_WordWrap(x+2, boxw-(charwidth*2), V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, chat_mini[i-1]);
|
||||
char *msg = CHAT_WordWrap(boxw-4, scale, V_SNAPTOBOTTOM|V_SNAPTOLEFT, chat_mini[i-1]);
|
||||
size_t j = 0;
|
||||
INT32 linescount = 0;
|
||||
INT32 linescount = 1;
|
||||
|
||||
while(msg[j]) // iterate through msg
|
||||
for (; msg[j]; j++) // iterate through msg
|
||||
{
|
||||
if (msg[j] < HU_FONTSTART) // don't draw
|
||||
{
|
||||
if (msg[j] == '\n') // get back down.
|
||||
{
|
||||
++j;
|
||||
if (!prev_linereturn)
|
||||
{
|
||||
linescount += 1;
|
||||
dx = 0;
|
||||
}
|
||||
prev_linereturn = true;
|
||||
continue;
|
||||
}
|
||||
else if (msg[j] & 0x80) // stolen from video.c, nice.
|
||||
{
|
||||
++j;
|
||||
continue;
|
||||
}
|
||||
if (msg[j] != '\n') // get back down.
|
||||
continue;
|
||||
|
||||
++j;
|
||||
}
|
||||
else
|
||||
{
|
||||
j++;
|
||||
}
|
||||
prev_linereturn = false;
|
||||
dx += charwidth;
|
||||
if (dx >= boxw)
|
||||
{
|
||||
dx = 0;
|
||||
linescount += 1;
|
||||
}
|
||||
linescount++;
|
||||
}
|
||||
dy = 0;
|
||||
dx = 0;
|
||||
msglines += linescount+1;
|
||||
|
||||
msglines += linescount;
|
||||
|
||||
if (msg)
|
||||
Z_Free(msg);
|
||||
|
|
@ -1411,63 +1345,50 @@ static void HU_drawMiniChat(void)
|
|||
y -= (cv_kartspeedometer.value ? 16 : 0);
|
||||
}
|
||||
|
||||
dx = 0;
|
||||
dy = 0;
|
||||
i = 0;
|
||||
prev_linereturn = false;
|
||||
|
||||
for (; i<=(chat_nummsg_min-1); i++) // iterate through our hot messages
|
||||
{
|
||||
INT32 clrflag = 0;
|
||||
INT32 timer = ((cv_chattime.value*TICRATE)-chat_timers[i]) - cv_chattime.value*TICRATE+9; // see below...
|
||||
INT32 transflag = (timer >= 0 && timer <= 9) ? (timer*V_10TRANS) : 0; // you can make bad jokes out of this one.
|
||||
size_t j = 0;
|
||||
char *msg = CHAT_WordWrap(x+2, boxw-(charwidth*2), V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, chat_mini[i]); // get the current message, and word wrap it.
|
||||
UINT8 *colormap = NULL;
|
||||
char *msg = CHAT_WordWrap(boxw-4, scale, V_SNAPTOBOTTOM|V_SNAPTOLEFT, chat_mini[i]); // get the current message, and word wrap it.
|
||||
|
||||
while(msg[j]) // iterate through msg
|
||||
INT32 linescount = 1;
|
||||
|
||||
for (; msg[j]; j++) // iterate through msg
|
||||
{
|
||||
if (msg[j] < HU_FONTSTART) // don't draw
|
||||
{
|
||||
if (msg[j] == '\n') // get back down.
|
||||
{
|
||||
++j;
|
||||
if (!prev_linereturn)
|
||||
{
|
||||
dy += charheight;
|
||||
dx = 0;
|
||||
}
|
||||
prev_linereturn = true;
|
||||
continue;
|
||||
}
|
||||
else if (msg[j] & 0x80) // stolen from video.c, nice.
|
||||
{
|
||||
clrflag = ((msg[j] & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
||||
colormap = V_GetStringColormap(clrflag);
|
||||
++j;
|
||||
continue;
|
||||
}
|
||||
if (msg[j] != '\n') // get back down.
|
||||
continue;
|
||||
|
||||
++j;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cv_chatbacktint.value) // on request of wolfy
|
||||
V_DrawFillConsoleMap(x + dx + 2, y+dy, charwidth, charheight, 159|V_SNAPTOBOTTOM|V_SNAPTOLEFT);
|
||||
|
||||
V_DrawChatCharacter(x + dx + 2, y+dy, msg[j++] |V_SNAPTOBOTTOM|V_SNAPTOLEFT|transflag, true, colormap);
|
||||
}
|
||||
|
||||
dx += charwidth;
|
||||
prev_linereturn = false;
|
||||
if (dx >= boxw)
|
||||
{
|
||||
dx = 0;
|
||||
dy += charheight;
|
||||
}
|
||||
linescount++;
|
||||
}
|
||||
dy += charheight;
|
||||
dx = 0;
|
||||
|
||||
if (cv_chatbacktint.value) // on request of wolfy
|
||||
{
|
||||
INT32 width = V_StringWidth(msg, 0);
|
||||
if (vid.width >= 640)
|
||||
width /= 2;
|
||||
|
||||
V_DrawFillConsoleMap(
|
||||
x-2, y,
|
||||
width+4,
|
||||
charheight * linescount,
|
||||
159|V_SNAPTOBOTTOM|V_SNAPTOLEFT
|
||||
);
|
||||
}
|
||||
|
||||
V_DrawStringScaled(
|
||||
x << FRACBITS,
|
||||
y << FRACBITS,
|
||||
scale, FRACUNIT, FRACUNIT,
|
||||
V_SNAPTOBOTTOM|V_SNAPTOLEFT|transflag,
|
||||
NULL,
|
||||
HU_FONT,
|
||||
msg
|
||||
);
|
||||
|
||||
y += charheight * linescount;
|
||||
|
||||
if (msg)
|
||||
Z_Free(msg);
|
||||
|
|
@ -1482,9 +1403,9 @@ static void HU_drawMiniChat(void)
|
|||
|
||||
static void HU_drawChatLog(INT32 offset)
|
||||
{
|
||||
INT32 charwidth = 4, charheight = 6;
|
||||
const INT32 charheight = (vid.width < 640) ? 12 : 6;
|
||||
INT32 boxw = cv_chatwidth.value, boxh = cv_chatheight.value;
|
||||
INT32 x = chatx+2, y, dx = 0, dy = 0;
|
||||
INT32 x = chatx+2, y;
|
||||
UINT32 i = 0;
|
||||
INT32 chat_topy, chat_bottomy;
|
||||
INT32 highlight = V_YELLOWMAP;
|
||||
|
|
@ -1520,59 +1441,71 @@ static void HU_drawChatLog(INT32 offset)
|
|||
}
|
||||
|
||||
chat_topy = y + chat_scroll*charheight;
|
||||
chat_bottomy = chat_topy + boxh*charheight;
|
||||
chat_bottomy = boxh*charheight + 2;
|
||||
|
||||
V_DrawFillConsoleMap(chatx, chat_topy, boxw, boxh*charheight +2, 159|V_SNAPTOBOTTOM|V_SNAPTOLEFT); // log box
|
||||
V_DrawFillConsoleMap(chatx, chat_topy, boxw, chat_bottomy, 159|V_SNAPTOBOTTOM|V_SNAPTOLEFT); // log box
|
||||
|
||||
const fixed_t scale = (vid.width < 640) ? FRACUNIT : FRACUNIT/2;
|
||||
|
||||
V_SetClipRect(
|
||||
(chatx) << FRACBITS, (chat_topy) << FRACBITS,
|
||||
(boxw) << FRACBITS, (chat_bottomy) <<FRACBITS,
|
||||
V_SNAPTOBOTTOM|V_SNAPTOLEFT
|
||||
);
|
||||
|
||||
chat_bottomy += chat_topy - 2;
|
||||
|
||||
INT32 dy = 0;
|
||||
|
||||
for (i=0; i<chat_nummsg_log; i++) // iterate through our chatlog
|
||||
{
|
||||
INT32 clrflag = 0;
|
||||
INT32 j = 0;
|
||||
char *msg = CHAT_WordWrap(x+2, boxw-(charwidth*2), V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, chat_log[i]); // get the current message, and word wrap it.
|
||||
UINT8 *colormap = NULL;
|
||||
while(msg[j]) // iterate through msg
|
||||
INT32 j = 0, startj = 0;
|
||||
char *msg = CHAT_WordWrap(boxw-4, scale, V_SNAPTOBOTTOM|V_SNAPTOLEFT, chat_log[i]); // get the current message, and word wrap it.
|
||||
|
||||
INT32 linescount = 1;
|
||||
|
||||
for (; msg[j]; j++) // iterate through msg
|
||||
{
|
||||
if (msg[j] < HU_FONTSTART) // don't draw
|
||||
{
|
||||
if (msg[j] == '\n') // get back down.
|
||||
{
|
||||
++j;
|
||||
dy += charheight;
|
||||
dx = 0;
|
||||
continue;
|
||||
}
|
||||
else if (msg[j] & 0x80) // stolen from video.c, nice.
|
||||
{
|
||||
clrflag = ((msg[j] & 0x7f) << V_CHARCOLORSHIFT) & V_CHARCOLORMASK;
|
||||
colormap = V_GetStringColormap(clrflag);
|
||||
++j;
|
||||
continue;
|
||||
}
|
||||
if (msg[j] != '\n') // get back down.
|
||||
continue;
|
||||
|
||||
++j;
|
||||
}
|
||||
else
|
||||
if (y + dy >= chat_bottomy)
|
||||
;
|
||||
else if (y + dy + 2 + charheight < chat_topy)
|
||||
{
|
||||
if ((y+dy+2 >= chat_topy) && (y+dy < (chat_bottomy)))
|
||||
V_DrawChatCharacter(x + dx + 2, y+dy+2, msg[j++] |V_SNAPTOBOTTOM|V_SNAPTOLEFT, true, colormap);
|
||||
else
|
||||
j++; // don't forget to increment this or we'll get stuck in the limbo.
|
||||
}
|
||||
|
||||
dx += charwidth;
|
||||
if (dx >= boxw-charwidth-2 && i<chat_nummsg_log && msg[j] >= HU_FONTSTART) // end of message shouldn't count, nor should invisible characters!!!!
|
||||
{
|
||||
dx = 0;
|
||||
dy += charheight;
|
||||
|
||||
if (y + dy + 2 + charheight >= chat_topy)
|
||||
{
|
||||
startj = j;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
linescount++;
|
||||
}
|
||||
dy += charheight;
|
||||
dx = 0;
|
||||
|
||||
if (y + dy < chat_bottomy)
|
||||
{
|
||||
V_DrawStringScaled(
|
||||
(x + 2) << FRACBITS,
|
||||
(y + dy + 2) << FRACBITS,
|
||||
scale, FRACUNIT, FRACUNIT,
|
||||
V_SNAPTOBOTTOM|V_SNAPTOLEFT,
|
||||
NULL,
|
||||
HU_FONT,
|
||||
msg+startj
|
||||
);
|
||||
}
|
||||
|
||||
dy += charheight * linescount;
|
||||
|
||||
if (msg)
|
||||
Z_Free(msg);
|
||||
}
|
||||
|
||||
V_ClearClipRect();
|
||||
|
||||
if (((chat_scroll >= chat_maxscroll) || (chat_scrollmedown)) && !(justscrolleddown || justscrolledup || chat_scrolltime)) // was already at the bottom of the page before new maxscroll calculation and was NOT scrolling.
|
||||
{
|
||||
|
|
@ -1607,14 +1540,14 @@ static void HU_drawChatLog(INT32 offset)
|
|||
|
||||
static void HU_DrawChat(void)
|
||||
{
|
||||
INT32 charwidth = 4, charheight = 6;
|
||||
const INT32 charheight = (vid.width < 640) ? 12 : 6;
|
||||
INT32 boxw = cv_chatwidth.value;
|
||||
INT32 t = 0, c = 0, y = chaty - (typelines*charheight);
|
||||
UINT32 i = 0, saylen = strlen(w_chat); // You learn new things everyday!
|
||||
INT32 cflag = 0;
|
||||
INT32 y = chaty;
|
||||
UINT32 i = 0;
|
||||
char cflag = '\x80', tflag = '\x80';
|
||||
const char *ntalk = "Say: ", *ttalk = "Team: ";
|
||||
const char *talk = ntalk;
|
||||
const char *mute = "Chat has been muted.";
|
||||
const char *mute = "\x86""Chat has been muted.";
|
||||
|
||||
#ifdef NETSPLITSCREEN
|
||||
if (r_splitscreen)
|
||||
|
|
@ -1637,85 +1570,70 @@ static void HU_DrawChat(void)
|
|||
talk = ttalk;
|
||||
#if 0
|
||||
if (players[consoleplayer].ctfteam == 1)
|
||||
t = 0x500; // Red
|
||||
t = '\0x85'; // Red
|
||||
else if (players[consoleplayer].ctfteam == 2)
|
||||
t = 0x400; // Blue
|
||||
t = '\0x84'; // Blue
|
||||
#endif
|
||||
}
|
||||
|
||||
typelines = 1;
|
||||
|
||||
const fixed_t scale = (vid.width < 640) ? FRACUNIT : FRACUNIT/2;
|
||||
|
||||
char *msg = NULL;
|
||||
|
||||
if (CHAT_MUTE)
|
||||
{
|
||||
talk = mute;
|
||||
typelines = 1;
|
||||
cflag = V_GRAYMAP; // set text in gray if chat is muted.
|
||||
//cflag = '\x86'; // set text in gray if chat is muted.
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = CHAT_WordWrap(
|
||||
boxw-4,
|
||||
scale,
|
||||
V_SNAPTOBOTTOM|V_SNAPTOLEFT,
|
||||
va("%c%s %c%s%c%c", cflag, talk, tflag, w_chat, '\x80', '_')
|
||||
);
|
||||
|
||||
for (; msg[i]; i++) // iterate through msg
|
||||
{
|
||||
if (msg[i] != '\n') // get back down.
|
||||
continue;
|
||||
|
||||
typelines++;
|
||||
}
|
||||
|
||||
// This is removed after the fact to not have the newline handling flicker.
|
||||
if (i != 0 && hu_tick >= 4)
|
||||
{
|
||||
msg[i-1] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
y -= typelines * charheight;
|
||||
|
||||
V_DrawFillConsoleMap(chatx, y-1, boxw, (typelines*charheight), 159 | V_SNAPTOBOTTOM | V_SNAPTOLEFT);
|
||||
|
||||
while (talk[i])
|
||||
{
|
||||
if (talk[i] < HU_FONTSTART)
|
||||
++i;
|
||||
else
|
||||
{
|
||||
V_DrawChatCharacter(chatx + c + 2, y, talk[i] |V_SNAPTOBOTTOM|V_SNAPTOLEFT|cflag, true, V_GetStringColormap(talk[i]|cflag));
|
||||
i++;
|
||||
}
|
||||
V_DrawStringScaled(
|
||||
(chatx + 2) << FRACBITS,
|
||||
y << FRACBITS,
|
||||
scale, FRACUNIT, FRACUNIT,
|
||||
V_SNAPTOBOTTOM|V_SNAPTOLEFT,
|
||||
NULL,
|
||||
HU_FONT,
|
||||
msg ? msg : talk
|
||||
);
|
||||
|
||||
c += charwidth;
|
||||
}
|
||||
|
||||
// if chat is muted, just draw the log and get it over with, no need to draw anything else.
|
||||
if (CHAT_MUTE)
|
||||
{
|
||||
HU_drawChatLog(0);
|
||||
return;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
typelines = 1;
|
||||
|
||||
if ((strlen(w_chat) == 0 || c_input == 0) && hu_tick < 4)
|
||||
V_DrawChatCharacter(chatx + 2 + c, y+1, '_' |V_SNAPTOBOTTOM|V_SNAPTOLEFT|t, true, NULL);
|
||||
|
||||
while (w_chat[i])
|
||||
{
|
||||
boolean skippedline = false;
|
||||
if (c_input == (i+1))
|
||||
{
|
||||
INT32 cursorx = (c+charwidth < boxw-charwidth) ? (chatx + 2 + c+charwidth) : (chatx+1); // we may have to go down.
|
||||
INT32 cursory = (cursorx != chatx+1) ? (y) : (y+charheight);
|
||||
if (hu_tick < 4)
|
||||
V_DrawChatCharacter(cursorx, cursory+1, '_' |V_SNAPTOBOTTOM|V_SNAPTOLEFT|t, true, NULL);
|
||||
|
||||
if (cursorx == chatx+1 && saylen == i) // a weirdo hack
|
||||
{
|
||||
typelines += 1;
|
||||
skippedline = true;
|
||||
}
|
||||
}
|
||||
|
||||
//Hurdler: isn't it better like that?
|
||||
if (w_chat[i] < HU_FONTSTART)
|
||||
++i;
|
||||
else
|
||||
V_DrawChatCharacter(chatx + c + 2, y, w_chat[i++] | V_SNAPTOBOTTOM|V_SNAPTOLEFT | t, true, NULL);
|
||||
|
||||
c += charwidth;
|
||||
if (c > boxw-(charwidth*2) && !skippedline)
|
||||
{
|
||||
c = 0;
|
||||
y += charheight;
|
||||
typelines += 1;
|
||||
}
|
||||
}
|
||||
if (msg)
|
||||
Z_Free(msg);
|
||||
|
||||
// handle /pm list. It's messy, horrible and I don't care.
|
||||
if (strnicmp(w_chat, "/pm", 3) == 0 && vid.width >= 400 && !teamtalk) // 320x200 unsupported kthxbai
|
||||
if (!CHAT_MUTE && !teamtalk && vid.width >= 640 && strnicmp(w_chat, "/pm", 3) == 0) // 320x200 unsupported kthxbai
|
||||
{
|
||||
INT32 count = 0;
|
||||
INT32 p_dispy = chaty - charheight -1;
|
||||
#ifdef NETSPLITSCREEN
|
||||
|
||||
if (r_splitscreen)
|
||||
{
|
||||
p_dispy -= BASEVIDHEIGHT/2;
|
||||
|
|
@ -1723,7 +1641,6 @@ static void HU_DrawChat(void)
|
|||
p_dispy += 16;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
p_dispy -= (cv_kartspeedometer.value ? 16 : 0);
|
||||
}
|
||||
|
|
@ -1776,14 +1693,14 @@ static void HU_DrawChat(void)
|
|||
char name[MAXPLAYERNAME+1];
|
||||
strlcpy(name, player_names[i], 7); // shorten name to 7 characters.
|
||||
V_DrawFillConsoleMap(chatx+ boxw + 2, p_dispy- (6*count), 48, 6, 159 | V_SNAPTOBOTTOM | V_SNAPTOLEFT); // fill it like the chat so the text doesn't become hard to read because of the hud.
|
||||
V_DrawSmallString(chatx+ boxw + 4, p_dispy- (6*count), V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, va("\x82%d\x80 - %s", i, name));
|
||||
V_DrawSmallString(chatx+ boxw + 4, p_dispy- (6*count), V_SNAPTOBOTTOM|V_SNAPTOLEFT, va("\x82%d\x80 - %s", i, name));
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (count == 0) // no results.
|
||||
{
|
||||
V_DrawFillConsoleMap(chatx+boxw+2, p_dispy- (6*count), 48, 6, 159 | V_SNAPTOBOTTOM | V_SNAPTOLEFT); // fill it like the chat so the text doesn't become hard to read because of the hud.
|
||||
V_DrawSmallString(chatx+boxw+4, p_dispy- (6*count), V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_ALLOWLOWERCASE, "NO RESULT.");
|
||||
V_DrawSmallString(chatx+boxw+4, p_dispy- (6*count), V_SNAPTOBOTTOM|V_SNAPTOLEFT, "NO RESULT.");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1983,11 +1900,11 @@ static void HU_DrawDemoInfo(void)
|
|||
if (!multiplayer)/* netreplay */
|
||||
{
|
||||
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-40, 0, M_GetText("Replay:"));
|
||||
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-32, V_ALLOWLOWERCASE, player_names[0]);
|
||||
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-32, 0, player_names[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-2, BASEVIDHEIGHT-10, V_ALLOWLOWERCASE, demo.titlename);
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-2, BASEVIDHEIGHT-10, 0, demo.titlename);
|
||||
}
|
||||
|
||||
if (modeattacking & ATTACKING_TIME)
|
||||
|
|
@ -2048,7 +1965,7 @@ void HU_DrawSongCredits(void)
|
|||
}
|
||||
|
||||
V_DrawRightAlignedThinStringAtFixed(x, y,
|
||||
V_ALLOWLOWERCASE|V_6WIDTHSPACE|V_SNAPTOLEFT|(cursongcredit.trans<<V_ALPHASHIFT),
|
||||
V_SNAPTOLEFT|(cursongcredit.trans<<V_ALPHASHIFT),
|
||||
cursongcredit.text);
|
||||
}
|
||||
|
||||
|
|
@ -2105,7 +2022,7 @@ void HU_Drawer(void)
|
|||
for (i = 0; i < (resynch_ticker / 16) % 4; i++)
|
||||
strcat(resynch_text, ".");
|
||||
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 180, V_YELLOWMAP | V_ALLOWLOWERCASE, resynch_text);
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 180, V_YELLOWMAP, resynch_text);
|
||||
}
|
||||
|
||||
drawontop:
|
||||
|
|
@ -2419,7 +2336,7 @@ static inline void HU_DrawSpectatorTicker(void)
|
|||
templength = length;
|
||||
}
|
||||
|
||||
V_DrawString(templength - duptweak, height, V_TRANSLUCENT|V_ALLOWLOWERCASE, current);
|
||||
V_DrawString(templength - duptweak, height, V_TRANSLUCENT, current);
|
||||
}
|
||||
|
||||
if ((length += len) >= dupadjust+8)
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ extern "C" {
|
|||
enum
|
||||
{
|
||||
X (HU),
|
||||
X (MENU),
|
||||
X (TINY),
|
||||
X (FILE),
|
||||
|
||||
|
|
|
|||
|
|
@ -26,10 +26,10 @@ public:
|
|||
/// @param rhi
|
||||
virtual void prepass(rhi::Rhi& rhi) = 0;
|
||||
|
||||
/// @brief Upload contents for needed GPU resources.
|
||||
/// @brief Upload contents for needed GPU resources. Passes must implement but this will be removed soon.
|
||||
/// @param rhi
|
||||
/// @param ctx
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) = 0;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) = 0;
|
||||
|
||||
/// @brief Issue draw calls.
|
||||
/// @param rhi
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ static Rect get_screen_viewport(uint32_t screen, uint32_t screens, uint32_t w, u
|
|||
return {0, 0, w, h};
|
||||
}
|
||||
|
||||
void BlitPostimgScreens::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void BlitPostimgScreens::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
// Upload needed buffers
|
||||
if (upload_quad_buffer_)
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ public:
|
|||
virtual ~BlitPostimgScreens();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ void BlitRectPass::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void BlitRectPass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void BlitRectPass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
if (quad_vbo_needs_upload_ && quad_vbo_)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public:
|
|||
virtual ~BlitRectPass();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ void ImguiPass::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void ImguiPass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void ImguiPass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
ImGuiIO& io = ImGui::GetIO();
|
||||
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public:
|
|||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public:
|
|||
virtual ~LambdaPass();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
};
|
||||
|
|
@ -63,7 +63,7 @@ void LambdaPass::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void LambdaPass::transfer(Rhi&, Handle<TransferContext>)
|
||||
void LambdaPass::transfer(Rhi&, Handle<GraphicsContext>)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -137,7 +137,7 @@ void PassManager::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void PassManager::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void PassManager::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
for (auto& pass : passes_)
|
||||
{
|
||||
|
|
@ -179,11 +179,8 @@ void PassManager::render(Rhi& rhi)
|
|||
|
||||
prepass(rhi);
|
||||
|
||||
Handle<TransferContext> tc = rhi.begin_transfer();
|
||||
transfer(rhi, tc);
|
||||
rhi.end_transfer(tc);
|
||||
|
||||
Handle<GraphicsContext> gc = rhi.begin_graphics();
|
||||
transfer(rhi, gc);
|
||||
graphics(rhi, gc);
|
||||
rhi.end_graphics(gc);
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ public:
|
|||
PassManager& operator=(PassManager&&) = delete;
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ void PostprocessWipePass::prepass(Rhi& rhi)
|
|||
});
|
||||
}
|
||||
|
||||
void PostprocessWipePass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void PostprocessWipePass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
if (wipe_tex_ == kNullHandle)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ public:
|
|||
virtual ~PostprocessWipePass();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ void FramebufferManager::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void FramebufferManager::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void FramebufferManager::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -169,7 +169,7 @@ void MainPaletteManager::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void MainPaletteManager::upload_palette(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void MainPaletteManager::upload_palette(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
std::array<byteColor_t, kPaletteSize> palette_32;
|
||||
for (std::size_t i = 0; i < kPaletteSize; i++)
|
||||
|
|
@ -179,7 +179,7 @@ void MainPaletteManager::upload_palette(Rhi& rhi, Handle<TransferContext> ctx)
|
|||
rhi.update_texture(ctx, palette_, {0, 0, kPaletteSize, 1}, PixelFormat::kRGBA8, tcb::as_bytes(tcb::span(palette_32)));
|
||||
}
|
||||
|
||||
void MainPaletteManager::upload_lighttables(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void MainPaletteManager::upload_lighttables(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
if (colormaps != nullptr)
|
||||
{
|
||||
|
|
@ -206,7 +206,7 @@ void MainPaletteManager::upload_lighttables(Rhi& rhi, Handle<TransferContext> ct
|
|||
}
|
||||
}
|
||||
|
||||
void MainPaletteManager::upload_default_colormap(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void MainPaletteManager::upload_default_colormap(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
std::array<uint8_t, kPaletteSize> data;
|
||||
for (std::size_t i = 0; i < kPaletteSize; i++)
|
||||
|
|
@ -216,7 +216,7 @@ void MainPaletteManager::upload_default_colormap(Rhi& rhi, Handle<TransferContex
|
|||
rhi.update_texture(ctx, default_colormap_, {0, 0, kPaletteSize, 1}, PixelFormat::kR8, tcb::as_bytes(tcb::span(data)));
|
||||
}
|
||||
|
||||
void MainPaletteManager::upload_colormaps(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void MainPaletteManager::upload_colormaps(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
for (auto to_upload : colormaps_to_upload_)
|
||||
{
|
||||
|
|
@ -279,7 +279,7 @@ rhi::Handle<rhi::Texture> MainPaletteManager::find_extra_lighttable(srb2::NotNul
|
|||
return lighttables_.at(lighttable);
|
||||
}
|
||||
|
||||
void MainPaletteManager::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void MainPaletteManager::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
upload_palette(rhi, ctx);
|
||||
upload_lighttables(rhi, ctx);
|
||||
|
|
@ -327,7 +327,7 @@ void CommonResourcesManager::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void CommonResourcesManager::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void CommonResourcesManager::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
if (!init_)
|
||||
{
|
||||
|
|
@ -382,7 +382,7 @@ void FlatTextureManager::prepass(Rhi& rhi)
|
|||
{
|
||||
}
|
||||
|
||||
void FlatTextureManager::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void FlatTextureManager::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
std::vector<std::array<uint8_t, 2>> flat_data;
|
||||
for (auto flat_lump : to_upload_)
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public:
|
|||
virtual ~FramebufferManager();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
@ -83,17 +83,17 @@ class MainPaletteManager final : public Pass
|
|||
std::vector<const uint8_t*> colormaps_to_upload_;
|
||||
std::vector<const uint8_t*> lighttables_to_upload_;
|
||||
|
||||
void upload_palette(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx);
|
||||
void upload_lighttables(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx);
|
||||
void upload_default_colormap(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx);
|
||||
void upload_colormaps(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx);
|
||||
void upload_palette(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx);
|
||||
void upload_lighttables(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx);
|
||||
void upload_default_colormap(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx);
|
||||
void upload_colormaps(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx);
|
||||
|
||||
public:
|
||||
MainPaletteManager();
|
||||
virtual ~MainPaletteManager();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
@ -120,7 +120,7 @@ public:
|
|||
virtual ~CommonResourcesManager();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
@ -153,7 +153,7 @@ public:
|
|||
virtual ~FlatTextureManager();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ void ScreenshotPass::prepass(Rhi& rhi)
|
|||
doing_screenshot_ = takescreenshot || moviemode != MM_OFF;
|
||||
}
|
||||
|
||||
void ScreenshotPass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void ScreenshotPass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public:
|
|||
virtual ~ScreenshotPass();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ void SoftwarePass::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void SoftwarePass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void SoftwarePass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
// Upload screen
|
||||
tcb::span<const std::byte> screen_span;
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public:
|
|||
virtual ~SoftwarePass();
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -498,7 +498,7 @@ void TwodeePass::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void TwodeePass::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void TwodeePass::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
if (!ctx_ || !data_)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ struct TwodeePass final : public Pass
|
|||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -348,7 +348,7 @@ void PatchAtlasCache::prepass(Rhi& rhi)
|
|||
}
|
||||
}
|
||||
|
||||
void PatchAtlasCache::transfer(Rhi& rhi, Handle<TransferContext> ctx)
|
||||
void PatchAtlasCache::transfer(Rhi& rhi, Handle<GraphicsContext> ctx)
|
||||
{
|
||||
SRB2_ASSERT(ready_for_lookup());
|
||||
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ public:
|
|||
PatchAtlas* find_patch(srb2::NotNull<const patch_t*> patch);
|
||||
|
||||
virtual void prepass(rhi::Rhi& rhi) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::TransferContext> ctx) override;
|
||||
virtual void transfer(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void graphics(rhi::Rhi& rhi, rhi::Handle<rhi::GraphicsContext> ctx) override;
|
||||
virtual void postpass(rhi::Rhi& rhi) override;
|
||||
};
|
||||
|
|
|
|||
31
src/info.c
31
src/info.c
|
|
@ -558,6 +558,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
|
||||
"IWHP", // Instawhip
|
||||
"WPRE", // Instawhip Recharge
|
||||
"WPRJ", // Instawhip Reject
|
||||
"GRNG", // Guard ring
|
||||
"GBDY", // Guard body
|
||||
|
||||
|
|
@ -581,6 +582,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"HFX6", // Hitlag stage 6
|
||||
"HFX8", // Hitlag stage 8
|
||||
"HFX9", // Hitlag stage 9
|
||||
"HFXX", // Hitlag stage 10
|
||||
|
||||
// Kart Items
|
||||
"RSHE", // Rocket sneaker
|
||||
|
|
@ -4022,6 +4024,7 @@ state_t states[NUMSTATES] =
|
|||
{SPR_NULL, 0, 0, {A_PlaySound}, sfx_s3ka0, 2, S_INSTAWHIP_RECHARGE3}, // S_INSTAWHIP_RECHARGE2
|
||||
{SPR_WPRE, FF_FULLBRIGHT|FF_FLOORSPRITE|FF_ANIMATE|0, 36, {NULL}, 17, 2, S_INSTAWHIP_RECHARGE4}, // S_INSTAWHIP_RECHARGE3
|
||||
{SPR_NULL, 0, 0, {A_PlaySound}, sfx_s3k7c, 2, S_NULL}, // S_INSTAWHIP_RECHARGE4
|
||||
{SPR_WPRJ, FF_ANIMATE, 9, {NULL}, 8, 1, S_NULL}, // S_INSTAWHIP_REJECT
|
||||
{SPR_GRNG, FF_FULLBRIGHT|FF_PAPERSPRITE|0, -1, {NULL}, 0, 0, S_NULL}, // S_BLOCKRING
|
||||
{SPR_GBDY, FF_FULLBRIGHT|FF_ANIMATE|0, -1, {NULL}, 4, 2, S_NULL}, // S_BLOCKBODY
|
||||
|
||||
|
|
@ -5320,6 +5323,7 @@ state_t states[NUMSTATES] =
|
|||
{SPR_HFX6, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 6, {NULL}, 5, 1, S_NULL}, // S_HITLAG_6
|
||||
{SPR_HFX8, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 8, {NULL}, 7, 1, S_NULL}, // S_HITLAG_8
|
||||
{SPR_HFX9, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 9, {NULL}, 8, 1, S_NULL}, // S_HITLAG_9
|
||||
{SPR_HFXX, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, 10, {NULL}, 9, 1, S_NULL}, // S_HITLAG_10
|
||||
|
||||
// Broly Ki Orb
|
||||
{SPR_LSSJ, FF_REVERSESUBTRACT|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_BROLY2}, // S_BROLY1
|
||||
|
|
@ -22861,6 +22865,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_INSTAWHIP_RECHARGE3 // raisestate
|
||||
},
|
||||
|
||||
{ // MT_INSTAWHIP_REJECT
|
||||
-1, // doomednum
|
||||
S_INSTAWHIP_REJECT, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
0, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
0, // speed
|
||||
90*FRACUNIT, // radius
|
||||
90*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOGRAVITY|MF_NOCLIPHEIGHT|MF_DONTENCOREMAP, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_BLOCKRING
|
||||
-1, // doomednum
|
||||
S_BLOCKRING, // spawnstate
|
||||
|
|
|
|||
|
|
@ -1109,6 +1109,7 @@ typedef enum sprite
|
|||
|
||||
SPR_IWHP, // Instawhip
|
||||
SPR_WPRE, // Instawhip Recharge
|
||||
SPR_WPRJ, // Instawhip Reject
|
||||
SPR_GRNG, // Guard ring
|
||||
SPR_GBDY, // Guard body
|
||||
|
||||
|
|
@ -1132,6 +1133,7 @@ typedef enum sprite
|
|||
SPR_HFX6, // Hitlag stage 6
|
||||
SPR_HFX8, // Hitlag stage 8
|
||||
SPR_HFX9, // Hitlag stage 9
|
||||
SPR_HFXX, // Hitlag stage 10
|
||||
|
||||
// Kart Items
|
||||
SPR_RSHE, // Rocket sneaker
|
||||
|
|
@ -4432,6 +4434,7 @@ typedef enum state
|
|||
S_INSTAWHIP_RECHARGE2,
|
||||
S_INSTAWHIP_RECHARGE3,
|
||||
S_INSTAWHIP_RECHARGE4,
|
||||
S_INSTAWHIP_REJECT,
|
||||
S_BLOCKRING,
|
||||
S_BLOCKBODY,
|
||||
|
||||
|
|
@ -5750,6 +5753,7 @@ typedef enum state
|
|||
S_HITLAG_6,
|
||||
S_HITLAG_8,
|
||||
S_HITLAG_9,
|
||||
S_HITLAG_10,
|
||||
|
||||
// Broly Ki Orb
|
||||
S_BROLY1,
|
||||
|
|
@ -6571,6 +6575,7 @@ typedef enum mobj_type
|
|||
|
||||
MT_INSTAWHIP,
|
||||
MT_INSTAWHIP_RECHARGE,
|
||||
MT_INSTAWHIP_REJECT,
|
||||
MT_BLOCKRING,
|
||||
MT_BLOCKBODY,
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ extern "C" {
|
|||
|
||||
#define MAXHITLAGTICS (30)
|
||||
#define HITLAGJITTERS (FRACUNIT / 20)
|
||||
#define NUM_HITLAG_STATES (8)
|
||||
#define NUM_HITLAG_STATES (9)
|
||||
|
||||
/*--------------------------------------------------
|
||||
void K_AddHitLag(mobj_t *mo, INT32 tics, boolean fromDamage);
|
||||
|
|
|
|||
48
src/k_hud.c
48
src/k_hud.c
|
|
@ -1487,9 +1487,9 @@ static void K_drawKartItem(void)
|
|||
if (offset)
|
||||
{
|
||||
if (flipamount) // reminder that this is for 3/4p's right end of the screen.
|
||||
V_DrawString(fx+2, fy+31, V_ALLOWLOWERCASE|V_HUDTRANS|V_SLIDEIN|fflags, va("x%d", stplyr->itemamount));
|
||||
V_DrawString(fx+2, fy+31, V_HUDTRANS|V_SLIDEIN|fflags, va("x%d", stplyr->itemamount));
|
||||
else
|
||||
V_DrawString(fx+24, fy+31, V_ALLOWLOWERCASE|V_HUDTRANS|V_SLIDEIN|fflags, va("x%d", stplyr->itemamount));
|
||||
V_DrawString(fx+24, fy+31, V_HUDTRANS|V_SLIDEIN|fflags, va("x%d", stplyr->itemamount));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1811,8 +1811,8 @@ void K_drawKartTimestamp(tic_t drawtime, INT32 TX, INT32 TY, INT32 splitflags, U
|
|||
}
|
||||
}
|
||||
|
||||
workx -= V_ThinStringWidth(stickermedalinfo.targettext, splitflags|V_6WIDTHSPACE);
|
||||
V_DrawThinString(workx, worky, splitflags|V_6WIDTHSPACE, stickermedalinfo.targettext);
|
||||
workx -= V_ThinStringWidth(stickermedalinfo.targettext, splitflags);
|
||||
V_DrawThinString(workx, worky, splitflags, stickermedalinfo.targettext);
|
||||
}
|
||||
|
||||
workx -= (6 + (i*5));
|
||||
|
|
@ -2302,7 +2302,7 @@ static void K_drawBossHealthBar(void)
|
|||
{
|
||||
rolrand = 10;
|
||||
}
|
||||
V_DrawRightAlignedThinString(startx, starty-rolrand, V_HUDTRANS|V_SLIDEIN|V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_6WIDTHSPACE, bossinfo.enemyname);
|
||||
V_DrawRightAlignedThinString(startx, starty-rolrand, V_HUDTRANS|V_SLIDEIN|V_SNAPTOBOTTOM|V_SNAPTORIGHT, bossinfo.enemyname);
|
||||
rolrand = 0;
|
||||
}
|
||||
|
||||
|
|
@ -3288,7 +3288,7 @@ static void K_DrawTypingNotifier(fixed_t x, fixed_t y, player_t *p)
|
|||
static void K_DrawNameTagForPlayer(fixed_t x, fixed_t y, player_t *p)
|
||||
{
|
||||
const INT32 clr = skincolors[p->skincolor].chatcolor;
|
||||
const INT32 namelen = V_ThinStringWidth(player_names[p - players], V_6WIDTHSPACE|V_ALLOWLOWERCASE);
|
||||
const INT32 namelen = V_ThinStringWidth(player_names[p - players], 0);
|
||||
|
||||
UINT8 *colormap = V_GetStringColormap(clr);
|
||||
INT32 barx = 0, bary = 0, barw = 0;
|
||||
|
|
@ -3336,7 +3336,7 @@ static void K_DrawNameTagForPlayer(fixed_t x, fixed_t y, player_t *p)
|
|||
V_DrawFixedPatch(x, y, FRACUNIT, 0, kp_nametagstem, colormap);
|
||||
|
||||
// Draw the name itself
|
||||
V_DrawThinStringAtFixed(x + (5*FRACUNIT), y - (26*FRACUNIT), V_6WIDTHSPACE|V_ALLOWLOWERCASE|clr, player_names[p - players]);
|
||||
V_DrawThinStringAtFixed(x + (5*FRACUNIT), y - (26*FRACUNIT), clr, player_names[p - players]);
|
||||
}
|
||||
|
||||
typedef struct weakspotdraw_t
|
||||
|
|
@ -5116,7 +5116,7 @@ static void K_DrawDirectorButton(INT32 idx, const char *label, patch_t *kp[2], I
|
|||
}
|
||||
}
|
||||
|
||||
textflags |= (flags | V_6WIDTHSPACE | V_ALLOWLOWERCASE);
|
||||
textflags |= flags;
|
||||
|
||||
K_drawButtonAnim(x, y - 4, flags, kp, leveltime);
|
||||
V_DrawRightAlignedThinString(x - 2, y, textflags, label);
|
||||
|
|
@ -5209,7 +5209,7 @@ static void K_drawDistributionDebugger(void)
|
|||
x + (18 * scale),
|
||||
y + (23 * scale),
|
||||
scale, FRACUNIT, FRACUNIT,
|
||||
V_ALLOWLOWERCASE|V_SNAPTOTOP,
|
||||
V_SNAPTOTOP,
|
||||
NULL, HU_FONT,
|
||||
va("x%d", amount)
|
||||
);
|
||||
|
|
@ -5218,15 +5218,15 @@ static void K_drawDistributionDebugger(void)
|
|||
y += space;
|
||||
}
|
||||
|
||||
V_DrawString((x >> FRACBITS) + 20, 2, V_ALLOWLOWERCASE|V_SNAPTOTOP, va("useOdds[%u]", rouletteData.useOdds));
|
||||
V_DrawString((x >> FRACBITS) + 20, 10, V_ALLOWLOWERCASE|V_SNAPTOTOP, va("speed = %u", rouletteData.speed));
|
||||
V_DrawString((x >> FRACBITS) + 20, 2, V_SNAPTOTOP, va("useOdds[%u]", rouletteData.useOdds));
|
||||
V_DrawString((x >> FRACBITS) + 20, 10, V_SNAPTOTOP, va("speed = %u", rouletteData.speed));
|
||||
|
||||
V_DrawString((x >> FRACBITS) + 20, 22, V_ALLOWLOWERCASE|V_SNAPTOTOP, va("baseDist = %u", rouletteData.baseDist));
|
||||
V_DrawString((x >> FRACBITS) + 20, 30, V_ALLOWLOWERCASE|V_SNAPTOTOP, va("dist = %u", rouletteData.dist));
|
||||
V_DrawString((x >> FRACBITS) + 20, 22, V_SNAPTOTOP, va("baseDist = %u", rouletteData.baseDist));
|
||||
V_DrawString((x >> FRACBITS) + 20, 30, V_SNAPTOTOP, va("dist = %u", rouletteData.dist));
|
||||
|
||||
V_DrawString((x >> FRACBITS) + 20, 42, V_ALLOWLOWERCASE|V_SNAPTOTOP, va("firstDist = %u", rouletteData.firstDist));
|
||||
V_DrawString((x >> FRACBITS) + 20, 50, V_ALLOWLOWERCASE|V_SNAPTOTOP, va("secondDist = %u", rouletteData.secondDist));
|
||||
V_DrawString((x >> FRACBITS) + 20, 58, V_ALLOWLOWERCASE|V_SNAPTOTOP, va("secondToFirst = %u", rouletteData.secondToFirst));
|
||||
V_DrawString((x >> FRACBITS) + 20, 42, V_SNAPTOTOP, va("firstDist = %u", rouletteData.firstDist));
|
||||
V_DrawString((x >> FRACBITS) + 20, 50, V_SNAPTOTOP, va("secondDist = %u", rouletteData.secondDist));
|
||||
V_DrawString((x >> FRACBITS) + 20, 58, V_SNAPTOTOP, va("secondToFirst = %u", rouletteData.secondToFirst));
|
||||
|
||||
#ifndef ITEM_LIST_SIZE
|
||||
Z_Free(rouletteData.itemList);
|
||||
|
|
@ -5350,19 +5350,19 @@ static void K_DrawGPRankDebugger(void)
|
|||
|
||||
grade = K_CalculateGPGrade(&grandprixinfo.rank);
|
||||
|
||||
V_DrawThinString(0, 0, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||
V_DrawThinString(0, 0, V_SNAPTOTOP|V_SNAPTOLEFT,
|
||||
va("POS: %d / %d", grandprixinfo.rank.position, RANK_NEUTRAL_POSITION));
|
||||
V_DrawThinString(0, 10, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||
V_DrawThinString(0, 10, V_SNAPTOTOP|V_SNAPTOLEFT,
|
||||
va("PTS: %d / %d", grandprixinfo.rank.winPoints, grandprixinfo.rank.totalPoints));
|
||||
V_DrawThinString(0, 20, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||
V_DrawThinString(0, 20, V_SNAPTOTOP|V_SNAPTOLEFT,
|
||||
va("LAPS: %d / %d", grandprixinfo.rank.laps, grandprixinfo.rank.totalLaps));
|
||||
V_DrawThinString(0, 30, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||
V_DrawThinString(0, 30, V_SNAPTOTOP|V_SNAPTOLEFT,
|
||||
va("CONTINUES: %d", grandprixinfo.rank.continuesUsed));
|
||||
V_DrawThinString(0, 40, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||
V_DrawThinString(0, 40, V_SNAPTOTOP|V_SNAPTOLEFT,
|
||||
va("PRISONS: %d / %d", grandprixinfo.rank.prisons, grandprixinfo.rank.totalPrisons));
|
||||
V_DrawThinString(0, 50, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||
V_DrawThinString(0, 50, V_SNAPTOTOP|V_SNAPTOLEFT,
|
||||
va("RINGS: %d / %d", grandprixinfo.rank.rings, grandprixinfo.rank.totalRings));
|
||||
V_DrawThinString(0, 60, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||
V_DrawThinString(0, 60, V_SNAPTOTOP|V_SNAPTOLEFT,
|
||||
va("EMERALD: %s", (grandprixinfo.rank.specialWon == true) ? "YES" : "NO"));
|
||||
|
||||
switch (grade)
|
||||
|
|
@ -5376,7 +5376,7 @@ static void K_DrawGPRankDebugger(void)
|
|||
default: { break; }
|
||||
}
|
||||
|
||||
V_DrawThinString(0, 90, V_SNAPTOTOP|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE|V_YELLOWMAP,
|
||||
V_DrawThinString(0, 90, V_SNAPTOTOP|V_SNAPTOLEFT|V_YELLOWMAP,
|
||||
va(" ** FINAL GRADE: %c", gradeChar));
|
||||
}
|
||||
|
||||
|
|
|
|||
247
src/k_menudraw.c
247
src/k_menudraw.c
|
|
@ -369,7 +369,7 @@ static void M_DrawMenuTooltips(void)
|
|||
if (currentMenu->menuitems[itemOn].tooltip != NULL)
|
||||
{
|
||||
V_DrawFixedPatch(0, 0, FRACUNIT, 0, W_CachePatchName("MENUHINT", PU_CACHE), NULL);
|
||||
V_DrawCenteredThinString(BASEVIDWIDTH/2, 12, V_ALLOWLOWERCASE|V_6WIDTHSPACE, currentMenu->menuitems[itemOn].tooltip);
|
||||
V_DrawCenteredThinString(BASEVIDWIDTH/2, 12, 0, currentMenu->menuitems[itemOn].tooltip);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -400,7 +400,7 @@ static void M_DrawMenuTyping(void)
|
|||
|
||||
if (currentMenu->menuitems[itemOn].text)
|
||||
{
|
||||
V_DrawThinString(x + 5, y - 2, highlightflags|V_6WIDTHSPACE|V_ALLOWLOWERCASE, currentMenu->menuitems[itemOn].text);
|
||||
V_DrawThinString(x + 5, y - 2, highlightflags, currentMenu->menuitems[itemOn].text);
|
||||
}
|
||||
|
||||
M_DrawMenuTooltips();
|
||||
|
|
@ -414,12 +414,12 @@ static void M_DrawMenuTyping(void)
|
|||
V_DrawFill(x + 4, y + 4 + 5, 1, 8+6, 121);
|
||||
V_DrawFill(x + 5 + boxwidth - 8, y + 4 + 5, 1, 8+6, 121);
|
||||
|
||||
V_DrawString(x + 8, y + 12, V_ALLOWLOWERCASE, cv->string);
|
||||
V_DrawString(x + 8, y + 12, 0, cv->string);
|
||||
if (skullAnimCounter < 4
|
||||
&& menutyping.menutypingclose == false
|
||||
&& menutyping.menutypingfade == (menutyping.keyboardtyping ? 9 : 18))
|
||||
{
|
||||
V_DrawCharacter(x + 8 + V_StringWidth(cv->string, 0), y + 12 + 1, '_' | 0x80, false);
|
||||
V_DrawCharacter(x + 8 + V_StringWidth(cv->string, 0), y + 12 + 1, '_', false);
|
||||
}
|
||||
|
||||
const INT32 buttonwidth = ((boxwidth + 1)/NUMVIRTUALKEYSINROW);
|
||||
|
|
@ -449,7 +449,7 @@ static void M_DrawMenuTyping(void)
|
|||
j = 0;
|
||||
while (j < NUMVIRTUALKEYSINROW)
|
||||
{
|
||||
INT32 mflag = V_ALLOWLOWERCASE|V_6WIDTHSPACE;
|
||||
INT32 mflag = 0;
|
||||
INT16 c = virtualKeyboard[i][j];
|
||||
|
||||
INT32 buttonspacing = 1;
|
||||
|
|
@ -595,11 +595,11 @@ static void M_DrawMenuTyping(void)
|
|||
// Some contextual stuff
|
||||
if (menutyping.keyboardtyping)
|
||||
{
|
||||
V_DrawThinString(returnx, y, V_ALLOWLOWERCASE|V_6WIDTHSPACE|V_GRAYMAP, "Type using your keyboard. Press Enter to confirm & exit.\nUse your controller or any directional input to use the Virtual Keyboard.\n");
|
||||
V_DrawThinString(returnx, y, V_GRAYMAP, "Type using your keyboard. Press Enter to confirm & exit.\nUse your controller or any directional input to use the Virtual Keyboard.\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawThinString(returnx, y, V_ALLOWLOWERCASE|V_6WIDTHSPACE|V_GRAYMAP, "Type using the Virtual Keyboard. Use the \'OK\' button to confirm & exit.\nPress any keyboard key not bound to a control to use it.");
|
||||
V_DrawThinString(returnx, y, V_GRAYMAP, "Type using the Virtual Keyboard. Use the \'OK\' button to confirm & exit.\nPress any keyboard key not bound to a control to use it.");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -622,7 +622,7 @@ void M_DrawMenuMessage(void)
|
|||
|
||||
if (menumessage.header != NULL)
|
||||
{
|
||||
V_DrawThinString(x, y - 10, highlightflags|V_6WIDTHSPACE|V_ALLOWLOWERCASE, menumessage.header);
|
||||
V_DrawThinString(x, y - 10, highlightflags, menumessage.header);
|
||||
}
|
||||
|
||||
if (menumessage.defaultstr)
|
||||
|
|
@ -640,11 +640,11 @@ void M_DrawMenuMessage(void)
|
|||
push = ((menumessage.timer % (anim_duration * 2)) < anim_duration);
|
||||
}
|
||||
|
||||
workx -= V_ThinStringWidth(menumessage.defaultstr, V_6WIDTHSPACE|V_ALLOWLOWERCASE);
|
||||
workx -= V_ThinStringWidth(menumessage.defaultstr, 0);
|
||||
V_DrawThinString(
|
||||
workx, worky + 1,
|
||||
V_6WIDTHSPACE|V_ALLOWLOWERCASE
|
||||
| ((push && (menumessage.closing & MENUMESSAGECLOSE)) ? highlightflags : 0),
|
||||
((push && (menumessage.closing & MENUMESSAGECLOSE))
|
||||
? highlightflags : 0),
|
||||
menumessage.defaultstr
|
||||
);
|
||||
|
||||
|
|
@ -671,11 +671,11 @@ void M_DrawMenuMessage(void)
|
|||
if (menumessage.closing)
|
||||
push = !push;
|
||||
|
||||
workx -= V_ThinStringWidth(menumessage.confirmstr, V_6WIDTHSPACE|V_ALLOWLOWERCASE);
|
||||
workx -= V_ThinStringWidth(menumessage.confirmstr, 0);
|
||||
V_DrawThinString(
|
||||
workx, worky + 1,
|
||||
V_6WIDTHSPACE|V_ALLOWLOWERCASE
|
||||
| ((push && (menumessage.closing & MENUMESSAGECLOSE)) ? highlightflags : 0),
|
||||
((push && (menumessage.closing & MENUMESSAGECLOSE))
|
||||
? highlightflags : 0),
|
||||
menumessage.confirmstr
|
||||
);
|
||||
|
||||
|
|
@ -733,7 +733,7 @@ void M_DrawMenuMessage(void)
|
|||
}
|
||||
}
|
||||
|
||||
V_DrawString((BASEVIDWIDTH - V_StringWidth(string, 0))/2, y, V_ALLOWLOWERCASE, string);
|
||||
V_DrawString((BASEVIDWIDTH - V_StringWidth(string, 0))/2, y, 0, string);
|
||||
y += 8;
|
||||
}
|
||||
}
|
||||
|
|
@ -782,7 +782,7 @@ void M_Drawer(void)
|
|||
if (customversionstring[0] != '\0')
|
||||
{
|
||||
V_DrawThinString(vid.dupx, vid.height - 20*vid.dupy, V_NOSCALESTART|V_TRANSLUCENT, "Mod version:");
|
||||
V_DrawThinString(vid.dupx, vid.height - 10*vid.dupy, V_NOSCALESTART|V_TRANSLUCENT|V_ALLOWLOWERCASE, customversionstring);
|
||||
V_DrawThinString(vid.dupx, vid.height - 10*vid.dupy, V_NOSCALESTART|V_TRANSLUCENT, customversionstring);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -817,7 +817,7 @@ void M_Drawer(void)
|
|||
if (window_notinfocus && cv_showfocuslost.value)
|
||||
{
|
||||
M_DrawTextBox((BASEVIDWIDTH/2) - (60), (BASEVIDHEIGHT/2) - (16), 13, 2);
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, (BASEVIDHEIGHT/2) - (4), highlightflags, "Focus Lost");
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, (BASEVIDHEIGHT/2) - (4), highlightflags|V_FORCEUPPERCASE, "Focus Lost");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -930,7 +930,7 @@ void M_DrawGenericMenu(void)
|
|||
V_DrawString(x + (skullAnimCounter/5) + 6, y + 12, highlightflags, "\x1D");
|
||||
}
|
||||
|
||||
V_DrawString(x + xoffs + 8, y + 12, V_ALLOWLOWERCASE, cv->string);
|
||||
V_DrawString(x + xoffs + 8, y + 12, 0, cv->string);
|
||||
|
||||
y += 16;
|
||||
}
|
||||
|
|
@ -1086,7 +1086,7 @@ void M_DrawKartGamemodeMenu(void)
|
|||
(type == IT_TRANSTEXT2
|
||||
? V_TRANSLUCENT
|
||||
: 0
|
||||
)|V_ALLOWLOWERCASE,
|
||||
),
|
||||
colormap,
|
||||
currentMenu->menuitems[i].text);
|
||||
}
|
||||
|
|
@ -1170,7 +1170,7 @@ void M_DrawMessageMenu(void)
|
|||
}
|
||||
}
|
||||
|
||||
V_DrawString((BASEVIDWIDTH - V_StringWidth(string, 0))/2,y,V_ALLOWLOWERCASE,string);
|
||||
V_DrawString((BASEVIDWIDTH - V_StringWidth(string, 0))/2,y,0,string);
|
||||
y += 8; //SHORT(hu_font[0]->height);
|
||||
}
|
||||
}
|
||||
|
|
@ -1726,7 +1726,7 @@ static void M_DrawCharSelectPreview(UINT8 num)
|
|||
else if (p->mdepth == CSSTEP_ASKCHANGES)
|
||||
{
|
||||
UINT8 i;
|
||||
char choices[2][9] = {"All good", "Change"};
|
||||
char choices[2][9] = {"ALL GOOD", "CHANGE"};
|
||||
INT32 xpos = x+8;
|
||||
INT32 ypos = y+38;
|
||||
|
||||
|
|
@ -1739,7 +1739,7 @@ static void M_DrawCharSelectPreview(UINT8 num)
|
|||
if (p->changeselect == i)
|
||||
V_DrawScaledPatch(xpos, cy, 0, W_CachePatchName("M_CURSOR", PU_CACHE));
|
||||
|
||||
V_DrawThinString(xpos+16, cy, (p->changeselect == i ? highlightflags : 0)|V_6WIDTHSPACE, choices[i]);
|
||||
V_DrawThinString(xpos+16, cy, (p->changeselect == i ? highlightflags : 0), choices[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1753,17 +1753,17 @@ static void M_DrawCharSelectPreview(UINT8 num)
|
|||
if (p->clonenum < setup_chargrid[p->gridx][p->gridy].numskins
|
||||
&& setup_chargrid[p->gridx][p->gridy].skinlist[p->clonenum] < numskins)
|
||||
{
|
||||
V_DrawThinString(x-3, y+12, V_6WIDTHSPACE,
|
||||
V_DrawThinString(x-3, y+12, 0,
|
||||
skins[setup_chargrid[p->gridx][p->gridy].skinlist[p->clonenum]].name);
|
||||
randomskin = (skins[setup_chargrid[p->gridx][p->gridy].skinlist[p->clonenum]].flags & SF_IRONMAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawThinString(x-3, y+12, V_6WIDTHSPACE, va("BAD CLONENUM %u", p->clonenum));
|
||||
V_DrawThinString(x-3, y+12, 0, va("BAD CLONENUM %u", p->clonenum));
|
||||
}
|
||||
/* FALLTHRU */
|
||||
case CSSTEP_CHARS: // Character Select grid
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("Class %c (s %c - w %c)",
|
||||
V_DrawThinString(x-3, y+2, 0, va("Class %c (s %c - w %c)",
|
||||
('A' + R_GetEngineClass(p->gridx+1, p->gridy+1, randomskin)),
|
||||
(randomskin
|
||||
? '?' : ('1'+p->gridx)),
|
||||
|
|
@ -1774,55 +1774,55 @@ static void M_DrawCharSelectPreview(UINT8 num)
|
|||
case CSSTEP_COLORS: // Select color
|
||||
if (p->color < numskincolors)
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, skincolors[p->color].name);
|
||||
V_DrawThinString(x-3, y+2, 0, skincolors[p->color].name);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("BAD COLOR %u", p->color));
|
||||
V_DrawThinString(x-3, y+2, 0, va("BAD COLOR %u", p->color));
|
||||
}
|
||||
break;
|
||||
case CSSTEP_FOLLOWERCATEGORY:
|
||||
if (p->followercategory == -1)
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "None");
|
||||
V_DrawThinString(x-3, y+2, 0, "None");
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE,
|
||||
V_DrawThinString(x-3, y+2, 0,
|
||||
followercategories[setup_followercategories[p->followercategory][1]].name);
|
||||
}
|
||||
break;
|
||||
case CSSTEP_FOLLOWER:
|
||||
if (p->followern == -1)
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "None");
|
||||
V_DrawThinString(x-3, y+2, 0, "None");
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE,
|
||||
V_DrawThinString(x-3, y+2, 0,
|
||||
followers[p->followern].name);
|
||||
}
|
||||
break;
|
||||
case CSSTEP_FOLLOWERCOLORS:
|
||||
if (p->followercolor == FOLLOWERCOLOR_MATCH)
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "Match");
|
||||
V_DrawThinString(x-3, y+2, 0, "Match");
|
||||
}
|
||||
else if (p->followercolor == FOLLOWERCOLOR_OPPOSITE)
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "Opposite");
|
||||
V_DrawThinString(x-3, y+2, 0, "Opposite");
|
||||
}
|
||||
else if (p->followercolor < numskincolors)
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, skincolors[p->followercolor].name);
|
||||
V_DrawThinString(x-3, y+2, 0, skincolors[p->followercolor].name);
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, va("BAD FOLLOWERCOLOR %u", p->followercolor));
|
||||
V_DrawThinString(x-3, y+2, 0, va("BAD FOLLOWERCOLOR %u", p->followercolor));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
V_DrawThinString(x-3, y+2, V_6WIDTHSPACE, "[extrainfo mode]");
|
||||
V_DrawThinString(x-3, y+2, 0, "[extrainfo mode]");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -2064,8 +2064,8 @@ static void M_DrawProfileCard(INT32 x, INT32 y, boolean greyedout, profile_t *p)
|
|||
if (p != NULL)
|
||||
{
|
||||
V_DrawProfileNum(x + 37 + 10, y + 131, 0, PR_GetProfileNum(p));
|
||||
V_DrawCenteredThinString(x, y + 141, V_GRAYMAP|V_6WIDTHSPACE, p->playername);
|
||||
V_DrawCenteredThinString(x, y + 151, V_GRAYMAP|V_6WIDTHSPACE, GetPrettyRRID(p->public_key, true));
|
||||
V_DrawCenteredThinString(x, y + 141, V_GRAYMAP, p->playername);
|
||||
V_DrawCenteredThinString(x, y + 151, V_GRAYMAP, GetPrettyRRID(p->public_key, true));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2293,7 +2293,7 @@ void M_DrawRaceDifficulty(void)
|
|||
consvar_t *cv = currentMenu->menuitems[i].itemaction.cvar;
|
||||
|
||||
V_DrawFixedPatch(x*FRACUNIT, y*FRACUNIT, FRACUNIT, 0, W_CachePatchName("MENUSHRT", PU_CACHE), colormap);
|
||||
V_DrawCenteredGamemodeString(centx, y - 3, V_ALLOWLOWERCASE, colormap, cv->string);
|
||||
V_DrawCenteredGamemodeString(centx, y - 3, 0, colormap, cv->string);
|
||||
|
||||
if (i == itemOn)
|
||||
{
|
||||
|
|
@ -2308,7 +2308,7 @@ void M_DrawRaceDifficulty(void)
|
|||
else // not a cvar
|
||||
{
|
||||
V_DrawFixedPatch(x*FRACUNIT, y*FRACUNIT, FRACUNIT, 0, W_CachePatchName("MENUPLTR", PU_CACHE), colormap);
|
||||
V_DrawGamemodeString(x + 16, y - 3, V_ALLOWLOWERCASE, colormap, currentMenu->menuitems[i].text);
|
||||
V_DrawGamemodeString(x + 16, y - 3, 0, colormap, currentMenu->menuitems[i].text);
|
||||
}
|
||||
x += GM_XOFFSET;
|
||||
y += GM_YOFFSET;
|
||||
|
|
@ -2917,7 +2917,6 @@ void M_DrawTimeAttack(void)
|
|||
if (mapheaderinfo[levellist.choosemap]->ghostCount <= 1)
|
||||
drawarrows = false;
|
||||
|
||||
optflags |= V_ALLOWLOWERCASE;
|
||||
if (mapheaderinfo[levellist.choosemap] == NULL)
|
||||
str = "Invalid map";
|
||||
else if (cv_dummystaff.value > mapheaderinfo[levellist.choosemap]->ghostCount)
|
||||
|
|
@ -3009,7 +3008,7 @@ static void M_MPOptDrawer(menu_t *m, INT16 extend[3][3])
|
|||
}
|
||||
}
|
||||
V_DrawFixedPatch((x + (extend[i][2]/2)) *FRACUNIT, (y + extend[i][2])*FRACUNIT, FRACUNIT, 0, buttback, colormap);
|
||||
V_DrawCenteredGamemodeString(x, y - 3, V_ALLOWLOWERCASE, colormap, m->menuitems[i].text);
|
||||
V_DrawCenteredGamemodeString(x, y - 3, 0, colormap, m->menuitems[i].text);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -3061,7 +3060,7 @@ void M_DrawMPHost(void)
|
|||
|
||||
// Ideally we'd calculate this but it's not worth it for a 1-off menu probably.....
|
||||
V_DrawFixedPatch(xp<<FRACBITS, yp<<FRACBITS, FRACUNIT, 0, gobutt, colormap);
|
||||
V_DrawCenteredGamemodeString(xp + (gobutt->width/2), yp -3, V_ALLOWLOWERCASE, colormap, currentMenu->menuitems[i].text);
|
||||
V_DrawCenteredGamemodeString(xp + (gobutt->width/2), yp -3, 0, colormap, currentMenu->menuitems[i].text);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -3069,14 +3068,14 @@ void M_DrawMPHost(void)
|
|||
{
|
||||
case IT_TRANSTEXT2:
|
||||
{
|
||||
V_DrawThinString(xp, yp, V_ALLOWLOWERCASE|V_6WIDTHSPACE|V_TRANSLUCENT, currentMenu->menuitems[i].text);
|
||||
V_DrawThinString(xp, yp, V_TRANSLUCENT, currentMenu->menuitems[i].text);
|
||||
xp += 5;
|
||||
yp += 11;
|
||||
break;
|
||||
}
|
||||
case IT_STRING:
|
||||
{
|
||||
V_DrawThinString(xp, yp, V_ALLOWLOWERCASE|V_6WIDTHSPACE | (i == itemOn ? highlightflags : 0), currentMenu->menuitems[i].text);
|
||||
V_DrawThinString(xp, yp, (i == itemOn ? highlightflags : 0), currentMenu->menuitems[i].text);
|
||||
|
||||
// Cvar specific handling
|
||||
switch (currentMenu->menuitems[i].status & IT_TYPE)
|
||||
|
|
@ -3095,14 +3094,14 @@ void M_DrawMPHost(void)
|
|||
V_DrawString(xp + (skullAnimCounter/5) + 94, yp+1, highlightflags, "\x1D");
|
||||
}
|
||||
|
||||
V_DrawThinString(xp + xoffs + 96, yp, V_ALLOWLOWERCASE|V_6WIDTHSPACE, cv->string);
|
||||
V_DrawThinString(xp + xoffs + 96, yp, 0, cv->string);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
w = V_ThinStringWidth(cv->string, V_6WIDTHSPACE);
|
||||
V_DrawThinString(xp + 138 - w, yp, ((cv->flags & CV_CHEAT) && !CV_IsSetToDefault(cv) ? warningflags : highlightflags)|V_6WIDTHSPACE, cv->string);
|
||||
w = V_ThinStringWidth(cv->string, 0);
|
||||
V_DrawThinString(xp + 138 - w, yp, ((cv->flags & CV_CHEAT) && !CV_IsSetToDefault(cv) ? warningflags : highlightflags), cv->string);
|
||||
if (i == itemOn)
|
||||
{
|
||||
V_DrawCharacter(xp + 138 - 10 - w - (skullAnimCounter/5), yp, '\x1C' | highlightflags, false); // left arrow
|
||||
|
|
@ -3117,8 +3116,8 @@ void M_DrawMPHost(void)
|
|||
if (currentMenu->menuitems[i].itemaction.routine != M_HandleHostMenuGametype)
|
||||
break;
|
||||
|
||||
w = V_ThinStringWidth(gametypes[menugametype]->name, V_6WIDTHSPACE);
|
||||
V_DrawThinString(xp + 138 - w, yp, highlightflags|V_6WIDTHSPACE, gametypes[menugametype]->name);
|
||||
w = V_ThinStringWidth(gametypes[menugametype]->name, 0);
|
||||
V_DrawThinString(xp + 138 - w, yp, highlightflags, gametypes[menugametype]->name);
|
||||
if (i == itemOn)
|
||||
{
|
||||
V_DrawCharacter(xp + 138 - 10 - w - (skullAnimCounter/5), yp, '\x1C' | highlightflags, false); // left arrow
|
||||
|
|
@ -3188,7 +3187,7 @@ void M_DrawMPJoinIP(void)
|
|||
strcpy(str, "---"); // If that fails too then there's nothing!
|
||||
}
|
||||
|
||||
V_DrawThinString(xp, yp, V_ALLOWLOWERCASE | ((i == itemOn || currentMenu->menuitems[i].status & IT_SPACE) ? highlightflags : 0)|V_ALLOWLOWERCASE|V_6WIDTHSPACE, str);
|
||||
V_DrawThinString(xp, yp, ((i == itemOn || currentMenu->menuitems[i].status & IT_SPACE) ? highlightflags : 0), str);
|
||||
|
||||
// Cvar specific handling
|
||||
switch (currentMenu->menuitems[i].status & IT_TYPE)
|
||||
|
|
@ -3213,7 +3212,7 @@ void M_DrawMPJoinIP(void)
|
|||
V_DrawString(xp + (skullAnimCounter/5) + 17, yp+1, highlightflags, "\x1D");
|
||||
}
|
||||
|
||||
V_DrawThinString(xp + xoffs + 18, yp, V_ALLOWLOWERCASE|V_6WIDTHSPACE, cv->string);
|
||||
V_DrawThinString(xp + xoffs + 18, yp, 0, cv->string);
|
||||
}
|
||||
|
||||
/*// On this specific menu the only time we'll ever see this is for the connect by IP typefield.
|
||||
|
|
@ -3361,16 +3360,16 @@ void M_DrawMPServerBrowser(void)
|
|||
V_DrawFixedPatch(startx*FRACUNIT, (starty + ypos)*FRACUNIT, FRACUNIT, transflag, racegt ? raceh : batlh, NULL);
|
||||
|
||||
// Server name:
|
||||
V_DrawString(startx+11, starty + ypos + 6, V_ALLOWLOWERCASE|transflag, serverlist[i].info.servername);
|
||||
V_DrawString(startx+11, starty + ypos + 6, transflag, serverlist[i].info.servername);
|
||||
|
||||
// Ping:
|
||||
V_DrawThinString(startx + 191, starty + ypos + 7, V_6WIDTHSPACE|transflag, va("%03d", serverlist[i].info.time));
|
||||
V_DrawThinString(startx + 191, starty + ypos + 7, transflag, va("%03d", serverlist[i].info.time));
|
||||
|
||||
// Playercount
|
||||
V_DrawThinString(startx + 214, starty + ypos + 7, V_6WIDTHSPACE|transflag, va("%02d/%02d", serverlist[i].info.numberofplayer, serverlist[i].info.maxplayer));
|
||||
V_DrawThinString(startx + 214, starty + ypos + 7, transflag, va("%02d/%02d", serverlist[i].info.numberofplayer, serverlist[i].info.maxplayer));
|
||||
|
||||
// Power Level
|
||||
V_DrawThinString(startx + 248, starty + ypos, V_6WIDTHSPACE|transflag, va("%04d PLv", serverlist[i].info.avgpwrlv));
|
||||
V_DrawThinString(startx + 248, starty + ypos, transflag, va("%04d PLv", serverlist[i].info.avgpwrlv));
|
||||
|
||||
// game speed if applicable:
|
||||
if (racegt)
|
||||
|
|
@ -3389,7 +3388,7 @@ void M_DrawMPServerBrowser(void)
|
|||
V_DrawFill(0, 53, 320, 1, 31);
|
||||
V_DrawFill(0, 55, 320, 1, 31);
|
||||
|
||||
V_DrawCenteredGamemodeString(160, 2, V_ALLOWLOWERCASE, 0, "Server Browser");
|
||||
V_DrawCenteredGamemodeString(160, 2, 0, 0, "Server Browser");
|
||||
|
||||
// normal menu options
|
||||
M_DrawGenericMenu();
|
||||
|
|
@ -3434,7 +3433,7 @@ void M_DrawOptionsMovingButton(void)
|
|||
UINT8 *c = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_PLAGUE, GTC_CACHE);
|
||||
|
||||
V_DrawFixedPatch((optionsmenu.optx)*FRACUNIT, (optionsmenu.opty)*FRACUNIT, FRACUNIT, 0, butt, c);
|
||||
V_DrawCenteredGamemodeString((optionsmenu.optx)-3, (optionsmenu.opty) - 16, V_ALLOWLOWERCASE, c, OPTIONS_MainDef.menuitems[OPTIONS_MainDef.lastOn].text);
|
||||
V_DrawCenteredGamemodeString((optionsmenu.optx)-3, (optionsmenu.opty) - 16, 0, c, OPTIONS_MainDef.menuitems[OPTIONS_MainDef.lastOn].text);
|
||||
}
|
||||
|
||||
void M_DrawOptions(void)
|
||||
|
|
@ -3465,7 +3464,7 @@ void M_DrawOptions(void)
|
|||
if (!(menutransition.tics && i == itemOn))
|
||||
{
|
||||
V_DrawFixedPatch(px*FRACUNIT, py*FRACUNIT, FRACUNIT, 0, buttback, c);
|
||||
V_DrawCenteredGamemodeString(px-3, py - 16, V_ALLOWLOWERCASE|tflag, (i == itemOn ? c : NULL), currentMenu->menuitems[i].text);
|
||||
V_DrawCenteredGamemodeString(px-3, py - 16, tflag, (i == itemOn ? c : NULL), currentMenu->menuitems[i].text);
|
||||
}
|
||||
|
||||
y += 48;
|
||||
|
|
@ -3552,7 +3551,7 @@ void M_DrawGenericOptions(void)
|
|||
V_DrawString(x + (skullAnimCounter/5) + 6, y + 12, highlightflags, "\x1D");
|
||||
}
|
||||
|
||||
V_DrawString(x + xoffs + 8, y + 12, V_ALLOWLOWERCASE, cv->string);
|
||||
V_DrawString(x + xoffs + 8, y + 12, 0, cv->string);
|
||||
|
||||
y += 16;
|
||||
}
|
||||
|
|
@ -3649,7 +3648,7 @@ void M_DrawProfileErase(void)
|
|||
}
|
||||
|
||||
V_DrawString(x, y,
|
||||
(i == optionsmenu.eraseprofilen ? highlightflags : 0)|V_ALLOWLOWERCASE,
|
||||
(i == optionsmenu.eraseprofilen ? highlightflags : 0),
|
||||
va("%sPRF%03d - %s (%s)",
|
||||
(cv_currprofile.value == i) ? "[In use] " : "",
|
||||
i, pr->profilename, pr->playername));
|
||||
|
|
@ -3705,7 +3704,7 @@ void M_DrawEditProfile(void)
|
|||
V_DrawFixedPatch(0, 0, FRACUNIT, 0, W_CachePatchName("MENUHINT", PU_CACHE), NULL);
|
||||
if (currentMenu->menuitems[itemOn].tooltip != NULL)
|
||||
{
|
||||
V_DrawCenteredThinString(224, 12, V_ALLOWLOWERCASE|V_6WIDTHSPACE, currentMenu->menuitems[itemOn].tooltip);
|
||||
V_DrawCenteredThinString(224, 12, 0, currentMenu->menuitems[itemOn].tooltip);
|
||||
}
|
||||
|
||||
// Draw the menu options...
|
||||
|
|
@ -3721,7 +3720,7 @@ void M_DrawEditProfile(void)
|
|||
// Background
|
||||
V_DrawFill(0, y, 400 - (menutransition.tics*64), 24, itemOn == i ? 169 : 30); // 169 is the plague colourization
|
||||
// Text
|
||||
V_DrawGamemodeString(x + (menutransition.tics*32), y - 6, V_ALLOWLOWERCASE|tflag, colormap, currentMenu->menuitems[i].text);
|
||||
V_DrawGamemodeString(x + (menutransition.tics*32), y - 6, tflag, colormap, currentMenu->menuitems[i].text);
|
||||
|
||||
// Cvar specific handling
|
||||
/*switch (currentMenu->menuitems[i].status & IT_TYPE)
|
||||
|
|
@ -3733,9 +3732,9 @@ void M_DrawEditProfile(void)
|
|||
{
|
||||
case IT_CV_STRING:
|
||||
V_DrawFill(0, y+24, 400 - (menutransition.tics*64), 16, itemOn == i ? 169 : 30); // 169 is the plague colourization
|
||||
V_DrawString(x + 8, y + 29, V_ALLOWLOWERCASE, cv->string);
|
||||
V_DrawString(x + 8, y + 29, 0, cv->string);
|
||||
if (skullAnimCounter < 4 && i == itemOn)
|
||||
V_DrawCharacter(x + 8 + V_StringWidth(cv->string, 0), y + 29, '_' | 0x80, false);
|
||||
V_DrawCharacter(x + 8 + V_StringWidth(cv->string, 0), y + 29, '_', false);
|
||||
y += 16;
|
||||
}
|
||||
}
|
||||
|
|
@ -3833,7 +3832,7 @@ void M_DrawProfileControls(void)
|
|||
V_DrawFixedPatch(0, 0, FRACUNIT, 0, W_CachePatchName("MENUHINT", PU_CACHE), NULL);
|
||||
if (currentMenu->menuitems[itemOn].tooltip != NULL)
|
||||
{
|
||||
V_DrawCenteredThinString(229, 12, V_ALLOWLOWERCASE|V_6WIDTHSPACE, currentMenu->menuitems[itemOn].tooltip);
|
||||
V_DrawCenteredThinString(229, 12, 0, currentMenu->menuitems[itemOn].tooltip);
|
||||
}
|
||||
|
||||
V_DrawFill(0, 0, 138, 200, 31); // Black border
|
||||
|
|
@ -3891,7 +3890,7 @@ void M_DrawProfileControls(void)
|
|||
}
|
||||
else if (currentMenu->menuitems[i].status & IT_CONTROL)
|
||||
{
|
||||
UINT32 vflags = V_6WIDTHSPACE;
|
||||
UINT32 vflags = V_FORCEUPPERCASE;
|
||||
INT32 gc = currentMenu->menuitems[i].mvar1;
|
||||
|
||||
UINT8 available = 0, set = 0;
|
||||
|
|
@ -3948,7 +3947,7 @@ void M_DrawProfileControls(void)
|
|||
if (!set)
|
||||
{
|
||||
if (!G_KeyBindIsNecessary(gc))
|
||||
vflags = V_REDMAP|V_6WIDTHSPACE;
|
||||
vflags = V_REDMAP;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
|
|
@ -4180,7 +4179,7 @@ void M_DrawItemToggles(void)
|
|||
{
|
||||
V_DrawScaledPatch(x, y, 0, W_CachePatchName("K_ISMUL", PU_CACHE));
|
||||
V_DrawScaledPatch(x, y, translucent, W_CachePatchName(K_GetItemPatch(currentMenu->menuitems[thisitem].mvar1, true), PU_CACHE));
|
||||
V_DrawString(x+24, y+31, V_ALLOWLOWERCASE|translucent, va("x%d", drawnum));
|
||||
V_DrawString(x+24, y+31, translucent, va("x%d", drawnum));
|
||||
}
|
||||
else
|
||||
V_DrawScaledPatch(x, y, translucent, W_CachePatchName(K_GetItemPatch(currentMenu->menuitems[thisitem].mvar1, true), PU_CACHE));
|
||||
|
|
@ -4245,7 +4244,7 @@ void M_DrawExtrasMovingButton(void)
|
|||
UINT8 *c = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_PLAGUE, GTC_CACHE);
|
||||
|
||||
V_DrawFixedPatch((extrasmenu.extx)*FRACUNIT, (extrasmenu.exty)*FRACUNIT, FRACUNIT, 0, butt, c);
|
||||
V_DrawCenteredGamemodeString((extrasmenu.extx)-3, (extrasmenu.exty) - 16, V_ALLOWLOWERCASE, c, EXTRAS_MainDef.menuitems[EXTRAS_MainDef.lastOn].text);
|
||||
V_DrawCenteredGamemodeString((extrasmenu.extx)-3, (extrasmenu.exty) - 16, 0, c, EXTRAS_MainDef.menuitems[EXTRAS_MainDef.lastOn].text);
|
||||
}
|
||||
|
||||
void M_DrawExtras(void)
|
||||
|
|
@ -4277,7 +4276,7 @@ void M_DrawExtras(void)
|
|||
if (!(menutransition.tics && i == itemOn))
|
||||
{
|
||||
V_DrawFixedPatch(px*FRACUNIT, py*FRACUNIT, FRACUNIT, 0, buttback, c);
|
||||
V_DrawCenteredGamemodeString(px-3, py - 16, V_ALLOWLOWERCASE|tflag, (i == itemOn ? c : NULL), currentMenu->menuitems[i].text);
|
||||
V_DrawCenteredGamemodeString(px-3, py - 16, tflag, (i == itemOn ? c : NULL), currentMenu->menuitems[i].text);
|
||||
}
|
||||
|
||||
y += 48;
|
||||
|
|
@ -4644,13 +4643,13 @@ void M_DrawKickHandler(void)
|
|||
P_IsMachineLocalPlayer(&players[i])
|
||||
? highlightflags
|
||||
: 0
|
||||
)|V_ALLOWLOWERCASE|V_6WIDTHSPACE,
|
||||
),
|
||||
player_names[i]
|
||||
);
|
||||
|
||||
V_DrawRightAlignedThinString(
|
||||
x+118, y-2,
|
||||
V_ALLOWLOWERCASE|V_6WIDTHSPACE,
|
||||
0,
|
||||
(players[i].spectator) ? "SPECTATOR" : "PLAYING"
|
||||
);
|
||||
}
|
||||
|
|
@ -4681,7 +4680,7 @@ void M_DrawKickHandler(void)
|
|||
V_DrawFixedPatch(0, 0, FRACUNIT, 0, W_CachePatchName("MENUHINT", PU_CACHE), NULL);
|
||||
V_DrawCenteredThinString(
|
||||
BASEVIDWIDTH/2, 12,
|
||||
V_ALLOWLOWERCASE|V_6WIDTHSPACE,
|
||||
0,
|
||||
(playerkickmenu.adminpowered)
|
||||
? "You are using ""\x85""Admin Tools""\x80"", ""\x83""(A)""\x80"" to kick and ""\x84""(C)""\x80"" to ban"
|
||||
: K_GetMidVoteLabel(menucallvote)
|
||||
|
|
@ -4734,7 +4733,7 @@ void M_DrawPlaybackMenu(void)
|
|||
V_DrawCharacter(currentMenu->x + currentMenu->menuitems[i].mvar1 + 4, currentMenu->y + 14,
|
||||
'\x1A' | V_SNAPTOTOP|highlightflags, false);
|
||||
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, currentMenu->y + 18, V_SNAPTOTOP|V_ALLOWLOWERCASE, currentMenu->menuitems[i].text);
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, currentMenu->y + 18, V_SNAPTOTOP, currentMenu->menuitems[i].text);
|
||||
|
||||
if ((currentMenu->menuitems[i].status & IT_TYPE) == IT_ARROWS)
|
||||
{
|
||||
|
|
@ -4765,7 +4764,7 @@ void M_DrawPlaybackMenu(void)
|
|||
continue;
|
||||
}
|
||||
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, currentMenu->y + 38, V_SNAPTOTOP|V_ALLOWLOWERCASE|highlightflags, str);
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, currentMenu->y + 38, V_SNAPTOTOP|highlightflags, str);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4833,7 +4832,7 @@ void M_DrawAddons(void)
|
|||
|
||||
y -= 16;
|
||||
|
||||
V_DrawString(x-21, y + (lsheadingheight - 12), highlightflags|V_ALLOWLOWERCASE, M_AddonsHeaderPath());
|
||||
V_DrawString(x-21, y + (lsheadingheight - 12), highlightflags, M_AddonsHeaderPath());
|
||||
V_DrawFill(x-21, y + (lsheadingheight - 3), MAXSTRINGLENGTH*8+6, 1, hilicol);
|
||||
//V_DrawFill(x-21, y + (lsheadingheight - 2), MAXSTRINGLENGTH*8+6, 1, 30);
|
||||
|
||||
|
|
@ -4849,7 +4848,7 @@ void M_DrawAddons(void)
|
|||
xoffs += 8;
|
||||
V_DrawString(x + (skullAnimCounter/5) - 20, y+8, highlightflags, "\x1D");
|
||||
}
|
||||
V_DrawString(x + xoffs - 18, y+8, V_ALLOWLOWERCASE|tflag, str);
|
||||
V_DrawString(x + xoffs - 18, y+8, tflag, str);
|
||||
}
|
||||
|
||||
V_DrawSmallScaledPatch(x - (21 + 5 + 16), y+4, (menusearch[0] ? 0 : V_TRANSLUCENT), addonsp[NUM_EXT+3]);
|
||||
|
|
@ -4900,7 +4899,7 @@ void M_DrawAddons(void)
|
|||
|
||||
for (; i < m; i++)
|
||||
{
|
||||
UINT32 flags = V_ALLOWLOWERCASE;
|
||||
UINT32 flags = 0;
|
||||
if (y > BASEVIDHEIGHT) break;
|
||||
if (dirmenu[i])
|
||||
#define type (UINT8)(dirmenu[i][DIR_TYPE])
|
||||
|
|
@ -4917,7 +4916,7 @@ void M_DrawAddons(void)
|
|||
if (itemOn == 1 && (size_t)i == dir_on[menudepthleft])
|
||||
{
|
||||
V_DrawFixedPatch((x-(16+4))<<FRACBITS, (y)<<FRACBITS, FRACUNIT/2, 0, addonsp[NUM_EXT+1], flashcol);
|
||||
flags = V_ALLOWLOWERCASE|highlightflags;
|
||||
flags = highlightflags;
|
||||
}
|
||||
|
||||
#define charsonside 14
|
||||
|
|
@ -5517,7 +5516,7 @@ static void M_DrawChallengePreview(INT32 x, INT32 y)
|
|||
}
|
||||
}
|
||||
|
||||
V_DrawThinString(1, BASEVIDHEIGHT-(9+3), V_ALLOWLOWERCASE|V_6WIDTHSPACE, gtname);
|
||||
V_DrawThinString(1, BASEVIDHEIGHT-(9+3), 0, gtname);
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -5603,11 +5602,11 @@ static void M_DrawChallengePreview(INT32 x, INT32 y)
|
|||
{
|
||||
x = 8;
|
||||
y = BASEVIDHEIGHT-16;
|
||||
V_DrawGamemodeString(x, y - 33, V_ALLOWLOWERCASE, R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_PLAGUE, GTC_MENUCACHE), cv_alttitle.string);
|
||||
V_DrawGamemodeString(x, y - 33, 0, R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_PLAGUE, GTC_MENUCACHE), cv_alttitle.string);
|
||||
|
||||
K_drawButtonAnim(x, y, 0, kp_button_a[1], challengesmenu.ticker);
|
||||
x += SHORT(kp_button_a[1][0]->width);
|
||||
V_DrawThinString(x, y + 1, V_6WIDTHSPACE|V_ALLOWLOWERCASE|highlightflags, "Toggle");
|
||||
V_DrawThinString(x, y + 1, highlightflags, "Toggle");
|
||||
|
||||
|
||||
break;
|
||||
|
|
@ -5924,7 +5923,7 @@ challengedesc:
|
|||
)
|
||||
)
|
||||
{
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 120 + 32, V_ALLOWLOWERCASE, challengesmenu.unlockcondition);
|
||||
V_DrawCenteredString(BASEVIDWIDTH/2, 120 + 32, 0, challengesmenu.unlockcondition);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -6027,12 +6026,12 @@ static void M_DrawStatsMaps(void)
|
|||
else
|
||||
str = "LOST AND FOUND";
|
||||
|
||||
V_DrawThinString(20, y, V_6WIDTHSPACE|highlightflags, str);
|
||||
V_DrawThinString(20, y, highlightflags, str);
|
||||
}
|
||||
|
||||
if (dotopname)
|
||||
{
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, y, V_6WIDTHSPACE|highlightflags, "MEDALS");
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, y, highlightflags, "MEDALS");
|
||||
dotopname = false;
|
||||
}
|
||||
|
||||
|
|
@ -6047,7 +6046,7 @@ static void M_DrawStatsMaps(void)
|
|||
|
||||
{
|
||||
char *title = G_BuildMapTitle(mnum+1);
|
||||
V_DrawThinString(24, y, V_6WIDTHSPACE, title);
|
||||
V_DrawThinString(24, y, V_FORCEUPPERCASE, title);
|
||||
Z_Free(title);
|
||||
}
|
||||
|
||||
|
|
@ -6067,7 +6066,7 @@ static void M_DrawStatsMaps(void)
|
|||
{
|
||||
if (i == 1)
|
||||
{
|
||||
V_DrawThinString(20, y, V_6WIDTHSPACE|highlightflags, "EXTRA MEDALS");
|
||||
V_DrawThinString(20, y, highlightflags, "EXTRA MEDALS");
|
||||
if (location)
|
||||
{
|
||||
y += STATSSTEP;
|
||||
|
|
@ -6106,15 +6105,15 @@ static void M_DrawStatsMaps(void)
|
|||
UINT16 color = min(unlockables[i].color, numskincolors-1);
|
||||
if (!color)
|
||||
color = SKINCOLOR_GOLD;
|
||||
V_DrawSmallMappedPatch(291, y+1, V_6WIDTHSPACE, W_CachePatchName("GOTITA", PU_CACHE),
|
||||
V_DrawSmallMappedPatch(291, y+1, 0, W_CachePatchName("GOTITA", PU_CACHE),
|
||||
R_GetTranslationColormap(TC_DEFAULT, color, GTC_MENUCACHE));
|
||||
}
|
||||
else
|
||||
{
|
||||
V_DrawSmallScaledPatch(291, y+1, V_6WIDTHSPACE, W_CachePatchName("NEEDIT", PU_CACHE));
|
||||
V_DrawSmallScaledPatch(291, y+1, 0, W_CachePatchName("NEEDIT", PU_CACHE));
|
||||
}
|
||||
|
||||
V_DrawThinString(24, y, V_6WIDTHSPACE, va("%s", unlockables[i].name));
|
||||
V_DrawThinString(24, y, 0, va("%s", unlockables[i].name));
|
||||
}
|
||||
|
||||
y += STATSSTEP;
|
||||
|
|
@ -6143,7 +6142,7 @@ void M_DrawStatistics(void)
|
|||
}
|
||||
|
||||
beststr[0] = 0;
|
||||
V_DrawThinString(20, 22, V_6WIDTHSPACE|V_ALLOWLOWERCASE|highlightflags, "Total Play Time:");
|
||||
V_DrawThinString(20, 22, highlightflags, "Total Play Time:");
|
||||
besttime = G_TicsToHours(gamedata->totalplaytime);
|
||||
if (besttime)
|
||||
{
|
||||
|
|
@ -6162,10 +6161,10 @@ void M_DrawStatistics(void)
|
|||
}
|
||||
besttime = G_TicsToSeconds(gamedata->totalplaytime);
|
||||
strcat(beststr, va("%i second%s", besttime, (besttime == 1 ? "" : "s")));
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 22, V_6WIDTHSPACE, beststr);
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 22, 0, beststr);
|
||||
beststr[0] = 0;
|
||||
|
||||
V_DrawThinString(20, 32, V_6WIDTHSPACE|V_ALLOWLOWERCASE|highlightflags, "Total Rings:");
|
||||
V_DrawThinString(20, 32, highlightflags, "Total Rings:");
|
||||
if (gamedata->totalrings > GDMAX_RINGS)
|
||||
{
|
||||
sprintf(beststr, "%c999,999,999+", '\x82');
|
||||
|
|
@ -6182,10 +6181,10 @@ void M_DrawStatistics(void)
|
|||
{
|
||||
sprintf(beststr, "%u", gamedata->totalrings);
|
||||
}
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 32, V_6WIDTHSPACE, va("%s collected", beststr));
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 32, 0, va("%s collected", beststr));
|
||||
|
||||
beststr[0] = 0;
|
||||
V_DrawThinString(20, 42, V_6WIDTHSPACE|V_ALLOWLOWERCASE|highlightflags, "Total Rounds:");
|
||||
V_DrawThinString(20, 42, highlightflags, "Total Rounds:");
|
||||
|
||||
strcat(beststr, va("%u Race", gamedata->roundsplayed[GDGT_RACE]));
|
||||
|
||||
|
|
@ -6206,11 +6205,11 @@ void M_DrawStatistics(void)
|
|||
strcat(beststr, va(", %u Custom", gamedata->roundsplayed[GDGT_CUSTOM]));
|
||||
}
|
||||
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 42, V_6WIDTHSPACE, beststr);
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 42, 0, beststr);
|
||||
|
||||
if (!statisticsmenu.maplist)
|
||||
{
|
||||
V_DrawCenteredThinString(BASEVIDWIDTH/2, 62, V_6WIDTHSPACE|V_ALLOWLOWERCASE, "No maps!?");
|
||||
V_DrawCenteredThinString(BASEVIDWIDTH/2, 62, 0, "No maps!?");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -6230,17 +6229,17 @@ void M_DrawStatistics(void)
|
|||
besttime += mapheaderinfo[i]->records.time;
|
||||
}
|
||||
|
||||
V_DrawThinString(20, 60, V_6WIDTHSPACE|V_ALLOWLOWERCASE, "Combined time records:");
|
||||
V_DrawThinString(20, 60, 0, "Combined time records:");
|
||||
|
||||
sprintf(beststr, "%i:%02i:%02i.%02i", G_TicsToHours(besttime), G_TicsToMinutes(besttime, false), G_TicsToSeconds(besttime), G_TicsToCentiseconds(besttime));
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 60, V_6WIDTHSPACE|V_ALLOWLOWERCASE|(mapsunfinished ? V_REDMAP : 0), beststr);
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 60, (mapsunfinished ? V_REDMAP : 0), beststr);
|
||||
|
||||
if (mapsunfinished)
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 70, V_6WIDTHSPACE|V_ALLOWLOWERCASE|V_REDMAP, va("(%d unfinished)", mapsunfinished));
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 70, V_REDMAP, va("(%d unfinished)", mapsunfinished));
|
||||
else
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 70, V_6WIDTHSPACE|V_ALLOWLOWERCASE, "(complete)");
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-20, 70, 0, "(complete)");
|
||||
|
||||
V_DrawThinString(32, 70, V_6WIDTHSPACE, va("x %d/%d", M_CountMedals(false, false), M_CountMedals(true, false)));
|
||||
V_DrawThinString(32, 70, 0, va("x %d/%d", M_CountMedals(false, false), M_CountMedals(true, false)));
|
||||
V_DrawSmallMappedPatch(20, 70, 0, W_CachePatchName("GOTITA", PU_CACHE),
|
||||
R_GetTranslationColormap(TC_DEFAULT, SKINCOLOR_GOLD, GTC_MENUCACHE));
|
||||
|
||||
|
|
@ -6443,15 +6442,15 @@ void M_DrawSoundTest(void)
|
|||
if (!titletext)
|
||||
titletext = "Untitled"; // Har har.
|
||||
|
||||
V_DrawThinString(x+1, y, V_ALLOWLOWERCASE|V_6WIDTHSPACE, titletext);
|
||||
V_DrawThinString(x+1, y, 0, titletext);
|
||||
if (soundtest.current->numtracks > 1)
|
||||
V_DrawThinString(x+1, (y += 10), V_ALLOWLOWERCASE|V_6WIDTHSPACE, va("Track %c", 'A'+soundtest.currenttrack));
|
||||
V_DrawThinString(x+1, (y += 10), 0, va("Track %c", 'A'+soundtest.currenttrack));
|
||||
if (soundtest.current->author)
|
||||
V_DrawThinString(x+1, (y += 10), V_ALLOWLOWERCASE|V_6WIDTHSPACE, soundtest.current->author);
|
||||
V_DrawThinString(x+1, (y += 10), 0, soundtest.current->author);
|
||||
if (soundtest.current->source)
|
||||
V_DrawThinString(x+1, (y += 10), V_ALLOWLOWERCASE|V_6WIDTHSPACE, soundtest.current->source);
|
||||
V_DrawThinString(x+1, (y += 10), 0, soundtest.current->source);
|
||||
if (soundtest.current->composers)
|
||||
V_DrawThinString(x+1, (y += 10), V_ALLOWLOWERCASE|V_6WIDTHSPACE, soundtest.current->composers);
|
||||
V_DrawThinString(x+1, (y += 10), 0, soundtest.current->composers);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -6459,11 +6458,11 @@ void M_DrawSoundTest(void)
|
|||
|
||||
titletext = "Sound Test";
|
||||
|
||||
V_DrawThinString(x+1, y, V_ALLOWLOWERCASE|V_6WIDTHSPACE, "Track ");
|
||||
V_DrawThinString(x+1, y, 0, "Track ");
|
||||
V_DrawThinString(
|
||||
x+1 + V_ThinStringWidth("Track ", V_ALLOWLOWERCASE|V_6WIDTHSPACE),
|
||||
x+1 + V_ThinStringWidth("Track ", 0),
|
||||
y,
|
||||
V_6WIDTHSPACE,
|
||||
0,
|
||||
va("%04X - %s", cv_soundtest.value, sfxstr)
|
||||
);
|
||||
}
|
||||
|
|
@ -6578,7 +6577,7 @@ void M_DrawSoundTest(void)
|
|||
);
|
||||
|
||||
// Text
|
||||
V_DrawCenteredThinString(x + 13, y + 1, V_6WIDTHSPACE, currentMenu->menuitems[i].text);
|
||||
V_DrawCenteredThinString(x + 13, y + 1, 0, currentMenu->menuitems[i].text);
|
||||
|
||||
V_ClearClipRect();
|
||||
|
||||
|
|
@ -6667,7 +6666,7 @@ void M_DrawSoundTest(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
V_DrawCenteredThinString(x + 13, y + 1, V_6WIDTHSPACE, currentMenu->menuitems[i].text);
|
||||
V_DrawCenteredThinString(x + 13, y + 1, 0, currentMenu->menuitems[i].text);
|
||||
}
|
||||
|
||||
x += 27;
|
||||
|
|
@ -6722,17 +6721,17 @@ void M_DrawDiscordRequests(void)
|
|||
V_DrawFixedPatch(56*FRACUNIT, 150*FRACUNIT + handoffset, FRACUNIT, 0, hand, NULL);
|
||||
}
|
||||
|
||||
K_DrawSticker(x + (slide * 32), y - 2, V_ThinStringWidth(M_GetDiscordName(curRequest), V_ALLOWLOWERCASE|V_6WIDTHSPACE), 0, false);
|
||||
V_DrawThinString(x + (slide * 32), y - 1, V_ALLOWLOWERCASE|V_6WIDTHSPACE|V_YELLOWMAP, M_GetDiscordName(curRequest));
|
||||
K_DrawSticker(x + (slide * 32), y - 2, V_ThinStringWidth(M_GetDiscordName(curRequest), 0), 0, false);
|
||||
V_DrawThinString(x + (slide * 32), y - 1, V_YELLOWMAP, M_GetDiscordName(curRequest));
|
||||
|
||||
K_DrawSticker(x, y + 12, V_ThinStringWidth(wantText, V_ALLOWLOWERCASE|V_6WIDTHSPACE), 0, true);
|
||||
V_DrawThinString(x, y + 10, V_ALLOWLOWERCASE|V_6WIDTHSPACE, wantText);
|
||||
K_DrawSticker(x, y + 12, V_ThinStringWidth(wantText, 0), 0, true);
|
||||
V_DrawThinString(x, y + 10, 0, wantText);
|
||||
|
||||
INT32 confirmButtonWidth = SHORT(kp_button_a[1][0]->width);
|
||||
INT32 declineButtonWidth = SHORT(kp_button_b[1][0]->width);
|
||||
INT32 altDeclineButtonWidth = SHORT(kp_button_x[1][0]->width);
|
||||
INT32 acceptTextWidth = V_ThinStringWidth(acceptText, V_ALLOWLOWERCASE|V_6WIDTHSPACE);
|
||||
INT32 declineTextWidth = V_ThinStringWidth(declineText, V_ALLOWLOWERCASE|V_6WIDTHSPACE);
|
||||
INT32 acceptTextWidth = V_ThinStringWidth(acceptText, 0);
|
||||
INT32 declineTextWidth = V_ThinStringWidth(declineText, 0);
|
||||
INT32 stickerWidth = (confirmButtonWidth + declineButtonWidth + altDeclineButtonWidth + acceptTextWidth + declineTextWidth);
|
||||
|
||||
K_DrawSticker(x, y + 26, stickerWidth, 0, true);
|
||||
|
|
@ -6740,7 +6739,7 @@ void M_DrawDiscordRequests(void)
|
|||
|
||||
INT32 xoffs = confirmButtonWidth;
|
||||
|
||||
V_DrawThinString((x + xoffs), y + 24, V_ALLOWLOWERCASE|V_6WIDTHSPACE, acceptText);
|
||||
V_DrawThinString((x + xoffs), y + 24, 0, acceptText);
|
||||
xoffs += acceptTextWidth;
|
||||
|
||||
K_drawButtonAnim((x + xoffs), y + 22, V_SNAPTORIGHT, kp_button_b[1], discordrequestmenu.ticker);
|
||||
|
|
@ -6749,7 +6748,7 @@ void M_DrawDiscordRequests(void)
|
|||
K_drawButtonAnim((x + xoffs), y + 22, V_SNAPTORIGHT, kp_button_x[1], discordrequestmenu.ticker);
|
||||
xoffs += altDeclineButtonWidth;
|
||||
|
||||
V_DrawThinString((x + xoffs), y + 24, V_ALLOWLOWERCASE|V_6WIDTHSPACE, declineText);
|
||||
V_DrawThinString((x + xoffs), y + 24, 0, declineText);
|
||||
|
||||
y -= 18;
|
||||
|
||||
|
|
@ -6759,8 +6758,10 @@ void M_DrawDiscordRequests(void)
|
|||
|
||||
curRequest = curRequest->next;
|
||||
|
||||
K_DrawSticker(x, y - 1 + ySlide, V_ThinStringWidth(M_GetDiscordName(curRequest), V_ALLOWLOWERCASE|V_6WIDTHSPACE), 0, false);
|
||||
V_DrawThinString(x, y + ySlide, V_ALLOWLOWERCASE|V_6WIDTHSPACE, M_GetDiscordName(curRequest));
|
||||
const char *discordname = M_GetDiscordName(curRequest);
|
||||
|
||||
K_DrawSticker(x, y - 1 + ySlide, V_ThinStringWidth(discordname, 0), 0, false);
|
||||
V_DrawThinString(x, y + ySlide, 0, discordname);
|
||||
|
||||
y -= 12;
|
||||
maxYSlide = 12;
|
||||
|
|
|
|||
|
|
@ -542,42 +542,42 @@ void K_CeremonyDrawer(void)
|
|||
{
|
||||
case 1:
|
||||
{
|
||||
V_DrawString(x, y, V_ALLOWLOWERCASE,
|
||||
V_DrawString(x, y, 0,
|
||||
va("POS: %d / %d", podiumData.rank.position, RANK_NEUTRAL_POSITION)
|
||||
);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
V_DrawString(x, y, V_ALLOWLOWERCASE,
|
||||
V_DrawString(x, y, 0,
|
||||
va("PTS: %d / %d", podiumData.rank.winPoints, podiumData.rank.totalPoints)
|
||||
);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
V_DrawString(x, y, V_ALLOWLOWERCASE,
|
||||
V_DrawString(x, y, 0,
|
||||
va("LAPS: %d / %d", podiumData.rank.laps, podiumData.rank.totalLaps)
|
||||
);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
V_DrawString(x, y, V_ALLOWLOWERCASE,
|
||||
V_DrawString(x, y, 0,
|
||||
va("CONTINUES: %d", podiumData.rank.continuesUsed)
|
||||
);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
V_DrawString(x, y, V_ALLOWLOWERCASE,
|
||||
V_DrawString(x, y, 0,
|
||||
va("PRISONS: %d / %d", podiumData.rank.prisons, podiumData.rank.totalPrisons)
|
||||
);
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
V_DrawString(x, y, V_ALLOWLOWERCASE,
|
||||
V_DrawString(x, y, 0,
|
||||
va("RINGS: %d / %d", podiumData.rank.rings, podiumData.rank.totalRings)
|
||||
);
|
||||
break;
|
||||
|
|
@ -595,7 +595,7 @@ void K_CeremonyDrawer(void)
|
|||
: "PRIZE";
|
||||
}
|
||||
|
||||
V_DrawString(x, y, V_ALLOWLOWERCASE,
|
||||
V_DrawString(x, y, 0,
|
||||
va("%s: %s",
|
||||
emeraldstr,
|
||||
(podiumData.rank.specialWon == true) ? "YES" : "NO")
|
||||
|
|
@ -604,14 +604,14 @@ void K_CeremonyDrawer(void)
|
|||
}
|
||||
case 8:
|
||||
{
|
||||
V_DrawString(x, y + 10, V_YELLOWMAP|V_ALLOWLOWERCASE,
|
||||
V_DrawString(x, y + 10, V_YELLOWMAP,
|
||||
va(" ** FINAL GRADE: %c", gradeChar)
|
||||
);
|
||||
break;
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
V_DrawThinString(2, BASEVIDHEIGHT - 10, V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||
V_DrawThinString(2, BASEVIDHEIGHT - 10, V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_6WIDTHSPACE,
|
||||
"Press some button type deal to continue"
|
||||
);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1172,7 +1172,7 @@ void K_DrawMidVote(void)
|
|||
{
|
||||
strWidth = V__OneScaleStringWidth(
|
||||
FRACUNIT,
|
||||
V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_SPLITSCREEN|V_6WIDTHSPACE|V_ALLOWLOWERCASE,
|
||||
V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_SPLITSCREEN,
|
||||
TINY_FONT, player_names[g_midVote.victim - players]
|
||||
);
|
||||
|
||||
|
|
@ -1180,7 +1180,7 @@ void K_DrawMidVote(void)
|
|||
x - (strWidth >> 1),
|
||||
y + (18 * FRACUNIT),
|
||||
FRACUNIT,
|
||||
V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_SPLITSCREEN|V_6WIDTHSPACE|V_ALLOWLOWERCASE, NULL,
|
||||
V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_SPLITSCREEN, NULL,
|
||||
TINY_FONT, player_names[g_midVote.victim - players]
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -887,7 +887,7 @@ static int libd_drawString(lua_State *L)
|
|||
fixed_t x = luaL_checkinteger(L, 1);
|
||||
fixed_t y = luaL_checkinteger(L, 2);
|
||||
const char *str = luaL_checkstring(L, 3);
|
||||
INT32 flags = luaL_optinteger(L, 4, V_ALLOWLOWERCASE);
|
||||
INT32 flags = luaL_optinteger(L, 4, 0);
|
||||
enum align align = luaL_checkoption(L, 5, "left", align_opt);
|
||||
|
||||
flags &= ~V_PARAMMASK; // Don't let crashes happen.
|
||||
|
|
@ -944,7 +944,7 @@ static int libd_drawTitleCardString(lua_State *L)
|
|||
fixed_t x = luaL_checkinteger(L, 1);
|
||||
fixed_t y = luaL_checkinteger(L, 2);
|
||||
const char *str = luaL_checkstring(L, 3);
|
||||
INT32 flags = luaL_optinteger(L, 4, V_ALLOWLOWERCASE);
|
||||
INT32 flags = luaL_optinteger(L, 4, 0);
|
||||
boolean rightalign = lua_optboolean(L, 5);
|
||||
INT32 timer = luaL_optinteger(L, 6, 0);
|
||||
INT32 threshold = luaL_optinteger(L, 7, 0);
|
||||
|
|
@ -969,7 +969,7 @@ static int libd_drawKartString(lua_State *L)
|
|||
fixed_t x = luaL_checkinteger(L, 1);
|
||||
fixed_t y = luaL_checkinteger(L, 2);
|
||||
const char *str = luaL_checkstring(L, 3);
|
||||
INT32 flags = luaL_optinteger(L, 4, V_ALLOWLOWERCASE);
|
||||
INT32 flags = luaL_optinteger(L, 4, 0);
|
||||
huddrawlist_h list;
|
||||
|
||||
flags &= ~V_PARAMMASK; // Don't let crashes happen.
|
||||
|
|
@ -998,7 +998,7 @@ static int libd_titleCardStringWidth(lua_State *L)
|
|||
static int libd_stringWidth(lua_State *L)
|
||||
{
|
||||
const char *str = luaL_checkstring(L, 1);
|
||||
INT32 flags = luaL_optinteger(L, 2, V_ALLOWLOWERCASE);
|
||||
INT32 flags = luaL_optinteger(L, 2, 0);
|
||||
enum widtht widtht = luaL_checkoption(L, 3, "normal", widtht_opt);
|
||||
|
||||
HUDONLY
|
||||
|
|
|
|||
41
src/m_cond.c
41
src/m_cond.c
|
|
@ -1515,7 +1515,7 @@ char *M_BuildConditionSetString(UINT16 unlockid)
|
|||
size_t len = 1024, worklen;
|
||||
static char message[1024] = "";
|
||||
const char *work = NULL;
|
||||
size_t max = 0, maxatstart = 0, start = 0, i;
|
||||
size_t i;
|
||||
boolean stopasap = false;
|
||||
|
||||
message[0] = '\0';
|
||||
|
|
@ -1577,35 +1577,9 @@ char *M_BuildConditionSetString(UINT16 unlockid)
|
|||
}
|
||||
}
|
||||
|
||||
// Rudementary word wrapping.
|
||||
// Simple and effective. Does not handle nonuniform letter sizes, etc. but who cares.
|
||||
for (i = 0; message[i]; i++)
|
||||
if (message[0] == '\0')
|
||||
{
|
||||
if (message[i] == ' ')
|
||||
{
|
||||
start = i;
|
||||
max += 4;
|
||||
maxatstart = max;
|
||||
}
|
||||
else if (message[i] == '\n')
|
||||
{
|
||||
start = 0;
|
||||
max = 0;
|
||||
maxatstart = 0;
|
||||
continue;
|
||||
}
|
||||
else if (message[i] & 0x80)
|
||||
continue;
|
||||
else
|
||||
max += 8;
|
||||
|
||||
// Start trying to wrap if presumed length exceeds the space we have on-screen.
|
||||
if (max >= DESCRIPTIONWIDTH && start > 0)
|
||||
{
|
||||
message[start] = '\n';
|
||||
max -= maxatstart;
|
||||
start = 0;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Valid sentence capitalisation handling.
|
||||
|
|
@ -1634,7 +1608,14 @@ char *M_BuildConditionSetString(UINT16 unlockid)
|
|||
}
|
||||
}
|
||||
|
||||
return message;
|
||||
// Finally, do a clean wordwrap!
|
||||
return V_ScaledWordWrap(
|
||||
DESCRIPTIONWIDTH << FRACBITS,
|
||||
FRACUNIT, FRACUNIT, FRACUNIT,
|
||||
0,
|
||||
HU_FONT,
|
||||
message
|
||||
);
|
||||
}
|
||||
|
||||
static boolean M_CheckUnlockConditions(player_t *player)
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ static void M_DrawPerfString(perfstatcol_t *col, int type)
|
|||
int value;
|
||||
|
||||
if (hires)
|
||||
draw_flags |= V_ALLOWLOWERCASE;
|
||||
draw_flags |= 0;
|
||||
|
||||
for (row = col->rows; row->lores_label; ++row)
|
||||
{
|
||||
|
|
@ -476,7 +476,7 @@ static void M_DrawTickStats(void)
|
|||
|
||||
if (M_HighResolution())
|
||||
{
|
||||
V_DrawSmallString(212, 10, V_MONOSPACE | V_ALLOWLOWERCASE | V_PURPLEMAP, "Calls:");
|
||||
V_DrawSmallString(212, 10, V_MONOSPACE | V_PURPLEMAP, "Calls:");
|
||||
|
||||
draw_row = 15;
|
||||
}
|
||||
|
|
@ -507,7 +507,7 @@ void M_DrawPerfStats(void)
|
|||
if (vid.width < 640 || vid.height < 400) // low resolution
|
||||
{
|
||||
// it's not gonna fit very well..
|
||||
V_DrawThinString(30, 30, V_MONOSPACE | V_ALLOWLOWERCASE | V_YELLOWMAP, "Not available for resolutions below 640x400");
|
||||
V_DrawThinString(30, 30, V_MONOSPACE | V_YELLOWMAP, "Not available for resolutions below 640x400");
|
||||
}
|
||||
else // high resolution
|
||||
{
|
||||
|
|
@ -526,10 +526,10 @@ void M_DrawPerfStats(void)
|
|||
}
|
||||
|
||||
snprintf(s, sizeof s - 1, "Bot %d (%s):", i + 1, player_names[i]);
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_ALLOWLOWERCASE | V_GRAYMAP, s);
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_GRAYMAP, s);
|
||||
|
||||
snprintf(s, sizeof s - 1, "%ld", (long)((ps_bots[i].total) / (I_GetPrecisePrecision() / 1000000)));
|
||||
V_DrawRightAlignedSmallString(x + 98, y, V_MONOSPACE | V_ALLOWLOWERCASE | V_GRAYMAP, s);
|
||||
V_DrawRightAlignedSmallString(x + 98, y, V_MONOSPACE | V_GRAYMAP, s);
|
||||
|
||||
y += 4; // repeated code!
|
||||
if (y > 192)
|
||||
|
|
@ -541,10 +541,10 @@ void M_DrawPerfStats(void)
|
|||
}
|
||||
|
||||
snprintf(s, sizeof s - 1, "Prediction:");
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_ALLOWLOWERCASE | V_YELLOWMAP, s);
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_YELLOWMAP, s);
|
||||
|
||||
snprintf(s, sizeof s - 1, "%ld", (long)((ps_bots[i].prediction) / (I_GetPrecisePrecision() / 1000000)));
|
||||
V_DrawRightAlignedSmallString(x + 98, y, V_MONOSPACE | V_ALLOWLOWERCASE, s);
|
||||
V_DrawRightAlignedSmallString(x + 98, y, V_MONOSPACE, s);
|
||||
|
||||
y += 4; // repeated code!
|
||||
if (y > 192)
|
||||
|
|
@ -556,10 +556,10 @@ void M_DrawPerfStats(void)
|
|||
}
|
||||
|
||||
snprintf(s, sizeof s - 1, "Nudge:");
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_ALLOWLOWERCASE | V_YELLOWMAP, s);
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_YELLOWMAP, s);
|
||||
|
||||
snprintf(s, sizeof s - 1, "%ld", (long)((ps_bots[i].nudge) / (I_GetPrecisePrecision() / 1000000)));
|
||||
V_DrawRightAlignedSmallString(x + 98, y, V_MONOSPACE | V_ALLOWLOWERCASE, s);
|
||||
V_DrawRightAlignedSmallString(x + 98, y, V_MONOSPACE, s);
|
||||
|
||||
y += 4; // repeated code!
|
||||
if (y > 192)
|
||||
|
|
@ -571,10 +571,10 @@ void M_DrawPerfStats(void)
|
|||
}
|
||||
|
||||
snprintf(s, sizeof s - 1, "Item:");
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_ALLOWLOWERCASE | V_YELLOWMAP, s);
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_YELLOWMAP, s);
|
||||
|
||||
snprintf(s, sizeof s - 1, "%ld", (long)((ps_bots[i].item) / (I_GetPrecisePrecision() / 1000000)));
|
||||
V_DrawRightAlignedSmallString(x + 98, y, V_MONOSPACE | V_ALLOWLOWERCASE, s);
|
||||
V_DrawRightAlignedSmallString(x + 98, y, V_MONOSPACE, s);
|
||||
|
||||
y += 4; // repeated code!
|
||||
if (y > 192)
|
||||
|
|
@ -586,11 +586,11 @@ void M_DrawPerfStats(void)
|
|||
}
|
||||
|
||||
snprintf(s, sizeof s - 1, "Other:");
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_ALLOWLOWERCASE | V_YELLOWMAP, s);
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_YELLOWMAP, s);
|
||||
|
||||
otherTime = ps_bots[i].total - ps_bots[i].prediction - ps_bots[i].nudge - ps_bots[i].item;
|
||||
snprintf(s, sizeof s - 1, "%ld", (long)(otherTime / (I_GetPrecisePrecision() / 1000000)));
|
||||
V_DrawRightAlignedSmallString(x + 98, y, V_MONOSPACE | V_ALLOWLOWERCASE, s);
|
||||
V_DrawRightAlignedSmallString(x + 98, y, V_MONOSPACE, s);
|
||||
|
||||
y += 4; // repeated code!
|
||||
if (y > 192)
|
||||
|
|
@ -621,7 +621,7 @@ void M_DrawPerfStats(void)
|
|||
if (vid.width < 640 || vid.height < 400) // low resolution
|
||||
{
|
||||
// it's not gonna fit very well..
|
||||
V_DrawThinString(30, 30, V_MONOSPACE | V_ALLOWLOWERCASE | V_YELLOWMAP, "Not available for resolutions below 640x400");
|
||||
V_DrawThinString(30, 30, V_MONOSPACE | V_YELLOWMAP, "Not available for resolutions below 640x400");
|
||||
}
|
||||
else // high resolution
|
||||
{
|
||||
|
|
@ -664,7 +664,7 @@ void M_DrawPerfStats(void)
|
|||
if (len > 25)
|
||||
tempstr += len - 25;
|
||||
snprintf(s, sizeof s - 1, "%s", tempstr);
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_ALLOWLOWERCASE | V_GRAYMAP, s);
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_GRAYMAP, s);
|
||||
y += 4; // repeated code!
|
||||
if (y > 192)
|
||||
{
|
||||
|
|
@ -689,7 +689,7 @@ void M_DrawPerfStats(void)
|
|||
if (len > 20)
|
||||
str += len - 20;
|
||||
snprintf(s, sizeof s - 1, "%20s: %ld", str, (long)((thinkframe_hooks[i].time_taken) / (I_GetPrecisePrecision() / 1000000)));
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | V_ALLOWLOWERCASE | text_color, s);
|
||||
V_DrawSmallString(x, y, V_MONOSPACE | text_color, s);
|
||||
y += 4; // repeated code!
|
||||
if (y > 192)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ void AVRecorder::draw_statistics() const
|
|||
V_DrawThinString(
|
||||
x,
|
||||
190,
|
||||
(V_6WIDTHSPACE | V_ALLOWLOWERCASE | V_SNAPTOBOTTOM | V_SNAPTORIGHT) | flags,
|
||||
(V_SNAPTOBOTTOM | V_SNAPTORIGHT) | flags,
|
||||
text.c_str()
|
||||
);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -104,6 +104,8 @@ static void M_ChallengesAutoFocus(UINT16 unlockid, boolean fresh)
|
|||
return;
|
||||
|
||||
challengesmenu.currentunlock = unlockid;
|
||||
if (challengesmenu.unlockcondition)
|
||||
Z_Free(challengesmenu.unlockcondition);
|
||||
challengesmenu.unlockcondition = M_BuildConditionSetString(challengesmenu.currentunlock);
|
||||
challengesmenu.unlockanim = (challengesmenu.pending && !challengesmenu.chaokeyadd ? 0 : MAXUNLOCKTIME);
|
||||
|
||||
|
|
@ -505,6 +507,8 @@ void M_ChallengesTick(void)
|
|||
M_UpdateUnlockablesAndExtraEmblems(true, true);
|
||||
|
||||
// Update shown description just in case..?
|
||||
if (challengesmenu.unlockcondition)
|
||||
Z_Free(challengesmenu.unlockcondition);
|
||||
challengesmenu.unlockcondition = M_BuildConditionSetString(challengesmenu.currentunlock);
|
||||
|
||||
challengesmenu.unlockcount[CC_TALLY]++;
|
||||
|
|
@ -787,6 +791,8 @@ boolean M_ChallengesInputs(INT32 ch)
|
|||
// After movement has been determined, figure out the current selection.
|
||||
i = (challengesmenu.col * CHALLENGEGRIDHEIGHT) + challengesmenu.row;
|
||||
challengesmenu.currentunlock = (gamedata->challengegrid[i]);
|
||||
if (challengesmenu.unlockcondition)
|
||||
Z_Free(challengesmenu.unlockcondition);
|
||||
challengesmenu.unlockcondition = M_BuildConditionSetString(challengesmenu.currentunlock);
|
||||
|
||||
challengesmenu.hilix = challengesmenu.col;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
// \brief MESSAGE BOX (aka: a hacked, cobbled together menu)
|
||||
|
||||
#include "../../k_menu.h"
|
||||
#include "../../v_video.h" // V_ScaledWordWrap, HU_FONT
|
||||
#include "../../z_zone.h"
|
||||
|
||||
// message prompt struct
|
||||
|
|
@ -30,42 +31,17 @@ static inline size_t M_StringHeight(const char *string)
|
|||
void M_StartMessage(const char *header, const char *string, void (*routine)(INT32), menumessagetype_t itemtype, const char *confirmstr, const char *defaultstr)
|
||||
{
|
||||
const UINT8 pid = 0;
|
||||
size_t max = 0, maxatstart = 0, start = 0, strlines, i;
|
||||
static char *message = NULL;
|
||||
Z_Free(message);
|
||||
message = Z_StrDup(string);
|
||||
DEBFILE(message);
|
||||
DEBFILE(string);
|
||||
|
||||
// Rudementary word wrapping.
|
||||
// Simple and effective. Does not handle nonuniform letter sizes, etc. but who cares.
|
||||
for (i = 0; message[i]; i++)
|
||||
{
|
||||
if (message[i] == ' ')
|
||||
{
|
||||
start = i;
|
||||
max += 4;
|
||||
maxatstart = max;
|
||||
}
|
||||
else if (message[i] == '\n')
|
||||
{
|
||||
start = 0;
|
||||
max = 0;
|
||||
maxatstart = 0;
|
||||
continue;
|
||||
}
|
||||
else if (message[i] & 0x80)
|
||||
continue;
|
||||
else
|
||||
max += 8;
|
||||
|
||||
// Start trying to wrap if presumed length exceeds the screen width.
|
||||
if (max >= BASEVIDWIDTH && start > 0)
|
||||
{
|
||||
message[start] = '\n';
|
||||
max -= maxatstart;
|
||||
start = 0;
|
||||
}
|
||||
}
|
||||
message = V_ScaledWordWrap(
|
||||
BASEVIDWIDTH << FRACBITS,
|
||||
FRACUNIT, FRACUNIT, FRACUNIT,
|
||||
0,
|
||||
HU_FONT,
|
||||
string
|
||||
);
|
||||
|
||||
strncpy(menumessage.message, string, MAXMENUMESSAGE);
|
||||
menumessage.header = header;
|
||||
|
|
@ -77,9 +53,6 @@ void M_StartMessage(const char *header, const char *string, void (*routine)(INT3
|
|||
menumessage.closing = 0;
|
||||
menumessage.active = true;
|
||||
|
||||
start = 0;
|
||||
max = 0;
|
||||
|
||||
if (!routine)
|
||||
{
|
||||
menumessage.flags = MM_NOTHING;
|
||||
|
|
@ -108,29 +81,7 @@ void M_StartMessage(const char *header, const char *string, void (*routine)(INT3
|
|||
}*/
|
||||
|
||||
//added : 06-02-98: now draw a textbox around the message
|
||||
// compute lenght max and the numbers of lines
|
||||
for (strlines = 0; *(message+start); strlines++)
|
||||
{
|
||||
for (i = 0; i < strlen(message+start);i++)
|
||||
{
|
||||
if (*(message+start+i) == '\n')
|
||||
{
|
||||
if (i > max)
|
||||
max = i;
|
||||
start += i;
|
||||
i = (size_t)-1; //added : 07-02-98 : damned!
|
||||
start++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i == strlen(message+start))
|
||||
{
|
||||
start += i;
|
||||
if (i > max)
|
||||
max = i;
|
||||
}
|
||||
}
|
||||
// oogh my god this was replaced in 2023
|
||||
|
||||
menumessage.x = (8 * MAXSTRINGLENGTH) - 1;
|
||||
menumessage.y = M_StringHeight(message);
|
||||
|
|
|
|||
28
src/p_mobj.c
28
src/p_mobj.c
|
|
@ -13788,8 +13788,15 @@ static void P_SpawnItemRow(mapthing_t *mthing, mobjtype_t *itemtypes, UINT8 numi
|
|||
y + FixedMul(length, FINESINE(fineangle)),
|
||||
z, MT_LOOPCENTERPOINT);
|
||||
|
||||
if (!P_MobjWasRemoved(loopanchor))
|
||||
Obj_LinkLoopAnchor(loopanchor, loopcenter, mthing->args[0]);
|
||||
if (P_MobjWasRemoved(loopanchor))
|
||||
{
|
||||
// No recovery.
|
||||
return;
|
||||
}
|
||||
|
||||
loopanchor->spawnpoint = NULL;
|
||||
|
||||
Obj_LinkLoopAnchor(loopanchor, loopcenter, mthing->args[0]);
|
||||
}
|
||||
|
||||
for (r = 0; r < numitems; r++)
|
||||
|
|
@ -13809,15 +13816,15 @@ static void P_SpawnItemRow(mapthing_t *mthing, mobjtype_t *itemtypes, UINT8 numi
|
|||
if (!inclusive)
|
||||
mobj = P_SpawnMobjFromMapThing(&dummything, x, y, z, itemtype);
|
||||
|
||||
if (!mobj)
|
||||
if (P_MobjWasRemoved(mobj))
|
||||
continue;
|
||||
|
||||
if (isloopend)
|
||||
{
|
||||
Obj_InitLoopEndpoint(mobj, loopanchor);
|
||||
}
|
||||
|
||||
mobj->spawnpoint = NULL;
|
||||
|
||||
if (!isloopend)
|
||||
continue;
|
||||
|
||||
Obj_InitLoopEndpoint(mobj, loopanchor);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -13875,11 +13882,12 @@ static void P_SpawnItemCircle(mapthing_t *mthing, mobjtype_t *itemtypes, UINT8 n
|
|||
|
||||
mobj = P_SpawnMobjFromMapThing(&dummything, x + v[0], y + v[1], z + v[2], itemtype);
|
||||
|
||||
if (!mobj)
|
||||
if (P_MobjWasRemoved(mobj))
|
||||
continue;
|
||||
|
||||
mobj->z -= mobj->height/2;
|
||||
mobj->spawnpoint = NULL;
|
||||
|
||||
mobj->z -= mobj->height/2;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4074,7 +4074,10 @@ static thinker_t* LoadMobjThinker(savebuffer_t *save, actionf_p1 thinker)
|
|||
if (diff2 & MD2_RENDERFLAGS)
|
||||
mobj->renderflags = READUINT32(save->p);
|
||||
if (diff2 & MD2_TID)
|
||||
P_SetThingTID(mobj, READINT16(save->p));
|
||||
{
|
||||
INT16 tid = READINT16(save->p);
|
||||
P_SetThingTID(mobj, tid);
|
||||
}
|
||||
if (diff2 & MD2_SPRITESCALE)
|
||||
{
|
||||
mobj->spritexscale = READFIXED(save->p);
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@
|
|||
#include "p_polyobj.h"
|
||||
#include "p_slopes.h"
|
||||
#include "hu_stuff.h"
|
||||
#include "v_video.h" // V_ALLOWLOWERCASE
|
||||
#include "m_misc.h"
|
||||
#include "m_cond.h" //unlock triggers
|
||||
#include "lua_hook.h" // LUA_HookSpecialExecute
|
||||
|
|
|
|||
|
|
@ -568,8 +568,6 @@ GlCoreRhi::~GlCoreRhi() = default;
|
|||
|
||||
rhi::Handle<rhi::RenderPass> GlCoreRhi::create_render_pass(const rhi::RenderPassDesc& desc)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
// GL has no formal render pass object
|
||||
GlCoreRenderPass pass;
|
||||
pass.desc = desc;
|
||||
|
|
@ -578,15 +576,11 @@ rhi::Handle<rhi::RenderPass> GlCoreRhi::create_render_pass(const rhi::RenderPass
|
|||
|
||||
void GlCoreRhi::destroy_render_pass(rhi::Handle<rhi::RenderPass> handle)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
render_pass_slab_.remove(handle);
|
||||
}
|
||||
|
||||
rhi::Handle<rhi::Texture> GlCoreRhi::create_texture(const rhi::TextureDesc& desc)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
GLenum internal_format = map_internal_texture_format(desc.format);
|
||||
SRB2_ASSERT(internal_format != GL_ZERO);
|
||||
GLenum format = GL_RGBA;
|
||||
|
|
@ -615,8 +609,6 @@ rhi::Handle<rhi::Texture> GlCoreRhi::create_texture(const rhi::TextureDesc& desc
|
|||
|
||||
void GlCoreRhi::destroy_texture(rhi::Handle<rhi::Texture> handle)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
SRB2_ASSERT(texture_slab_.is_valid(handle) == true);
|
||||
GlCoreTexture casted = texture_slab_.remove(handle);
|
||||
GLuint name = casted.texture;
|
||||
|
|
@ -624,16 +616,14 @@ void GlCoreRhi::destroy_texture(rhi::Handle<rhi::Texture> handle)
|
|||
}
|
||||
|
||||
void GlCoreRhi::update_texture(
|
||||
Handle<TransferContext> ctx,
|
||||
Handle<GraphicsContext> ctx,
|
||||
Handle<Texture> texture,
|
||||
Rect region,
|
||||
srb2::rhi::PixelFormat data_format,
|
||||
tcb::span<const std::byte> data
|
||||
)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
|
||||
SRB2_ASSERT(graphics_context_active_ == true);
|
||||
|
||||
if (data.empty())
|
||||
{
|
||||
|
|
@ -678,8 +668,6 @@ void GlCoreRhi::update_texture(
|
|||
|
||||
rhi::Handle<rhi::Buffer> GlCoreRhi::create_buffer(const rhi::BufferDesc& desc)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
GLenum target = map_buffer_type(desc.type);
|
||||
SRB2_ASSERT(target != GL_ZERO);
|
||||
|
||||
|
|
@ -704,10 +692,7 @@ rhi::Handle<rhi::Buffer> GlCoreRhi::create_buffer(const rhi::BufferDesc& desc)
|
|||
|
||||
void GlCoreRhi::destroy_buffer(rhi::Handle<rhi::Buffer> handle)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
SRB2_ASSERT(buffer_slab_.is_valid(handle) == true);
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
GlCoreBuffer casted = buffer_slab_.remove(handle);
|
||||
GLuint name = casted.buffer;
|
||||
|
||||
|
|
@ -715,15 +700,14 @@ void GlCoreRhi::destroy_buffer(rhi::Handle<rhi::Buffer> handle)
|
|||
}
|
||||
|
||||
void GlCoreRhi::update_buffer(
|
||||
rhi::Handle<TransferContext> ctx,
|
||||
rhi::Handle<GraphicsContext> ctx,
|
||||
rhi::Handle<rhi::Buffer> handle,
|
||||
uint32_t offset,
|
||||
tcb::span<const std::byte> data
|
||||
)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
|
||||
SRB2_ASSERT(graphics_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == graphics_context_generation_);
|
||||
|
||||
if (data.empty())
|
||||
{
|
||||
|
|
@ -753,11 +737,10 @@ void GlCoreRhi::update_buffer(
|
|||
}
|
||||
|
||||
rhi::Handle<rhi::UniformSet>
|
||||
GlCoreRhi::create_uniform_set(rhi::Handle<rhi::TransferContext> ctx, const rhi::CreateUniformSetInfo& info)
|
||||
GlCoreRhi::create_uniform_set(rhi::Handle<rhi::GraphicsContext> ctx, const rhi::CreateUniformSetInfo& info)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
|
||||
SRB2_ASSERT(graphics_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == graphics_context_generation_);
|
||||
|
||||
GlCoreUniformSet uniform_set;
|
||||
|
||||
|
|
@ -770,14 +753,13 @@ GlCoreRhi::create_uniform_set(rhi::Handle<rhi::TransferContext> ctx, const rhi::
|
|||
}
|
||||
|
||||
rhi::Handle<rhi::BindingSet> GlCoreRhi::create_binding_set(
|
||||
rhi::Handle<rhi::TransferContext> ctx,
|
||||
rhi::Handle<rhi::GraphicsContext> ctx,
|
||||
Handle<Pipeline> pipeline,
|
||||
const rhi::CreateBindingSetInfo& info
|
||||
)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == transfer_context_generation_);
|
||||
SRB2_ASSERT(graphics_context_active_ == true);
|
||||
SRB2_ASSERT(ctx.generation() == graphics_context_generation_);
|
||||
|
||||
SRB2_ASSERT(pipeline_slab_.is_valid(pipeline) == true);
|
||||
auto& pl = pipeline_slab_[pipeline];
|
||||
|
|
@ -842,8 +824,6 @@ rhi::Handle<rhi::BindingSet> GlCoreRhi::create_binding_set(
|
|||
|
||||
rhi::Handle<rhi::Renderbuffer> GlCoreRhi::create_renderbuffer(const rhi::RenderbufferDesc& desc)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
GLuint name = 0;
|
||||
gl_->GenRenderbuffers(1, &name);
|
||||
|
||||
|
|
@ -876,8 +856,6 @@ rhi::Handle<rhi::Renderbuffer> GlCoreRhi::create_renderbuffer(const rhi::Renderb
|
|||
|
||||
void GlCoreRhi::destroy_renderbuffer(rhi::Handle<rhi::Renderbuffer> handle)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
SRB2_ASSERT(renderbuffer_slab_.is_valid(handle) == true);
|
||||
GlCoreRenderbuffer casted = renderbuffer_slab_.remove(handle);
|
||||
GLuint name = casted.renderbuffer;
|
||||
|
|
@ -1192,8 +1170,6 @@ rhi::Handle<rhi::Pipeline> GlCoreRhi::create_pipeline(const PipelineDesc& desc)
|
|||
|
||||
void GlCoreRhi::destroy_pipeline(rhi::Handle<rhi::Pipeline> handle)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
||||
SRB2_ASSERT(pipeline_slab_.is_valid(handle) == true);
|
||||
GlCorePipeline casted = pipeline_slab_.remove(handle);
|
||||
GLuint vertex_shader = casted.vertex_shader;
|
||||
|
|
@ -1222,25 +1198,6 @@ void GlCoreRhi::end_graphics(rhi::Handle<rhi::GraphicsContext> handle)
|
|||
GL_ASSERT;
|
||||
}
|
||||
|
||||
rhi::Handle<rhi::TransferContext> GlCoreRhi::begin_transfer()
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == false);
|
||||
|
||||
transfer_context_generation_ += 1;
|
||||
transfer_context_active_ = true;
|
||||
|
||||
return rhi::Handle<rhi::TransferContext>(0, transfer_context_generation_);
|
||||
}
|
||||
|
||||
void GlCoreRhi::end_transfer(rhi::Handle<rhi::TransferContext> ctx)
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
SRB2_ASSERT(transfer_context_active_ == true);
|
||||
|
||||
transfer_context_active_ = false;
|
||||
}
|
||||
|
||||
void GlCoreRhi::present()
|
||||
{
|
||||
SRB2_ASSERT(platform_ != nullptr);
|
||||
|
|
@ -1269,7 +1226,7 @@ void GlCoreRhi::begin_default_render_pass(Handle<GraphicsContext> ctx, bool clea
|
|||
gl_->ClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
gl_->ClearDepth(1.0f);
|
||||
gl_->ClearStencil(0);
|
||||
gl_->Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
gl_->Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
||||
GL_ASSERT;
|
||||
}
|
||||
|
||||
|
|
@ -1661,7 +1618,6 @@ void GlCoreRhi::bind_binding_set(Handle<GraphicsContext> ctx, Handle<BindingSet>
|
|||
|
||||
void GlCoreRhi::bind_index_buffer(Handle<GraphicsContext> ctx, Handle<Buffer> buffer)
|
||||
{
|
||||
SRB2_ASSERT(transfer_context_active_ == false);
|
||||
SRB2_ASSERT(graphics_context_active_ == true && graphics_context_generation_ == ctx.generation());
|
||||
SRB2_ASSERT(current_render_pass_.has_value() == true && current_pipeline_.has_value() == true);
|
||||
|
||||
|
|
|
|||
|
|
@ -123,10 +123,6 @@ struct GlCoreGraphicsContext : public rhi::GraphicsContext
|
|||
{
|
||||
};
|
||||
|
||||
struct GlCoreTransferContext : public rhi::TransferContext
|
||||
{
|
||||
};
|
||||
|
||||
struct GlCoreActiveUniform
|
||||
{
|
||||
uint32_t type;
|
||||
|
|
@ -159,10 +155,8 @@ class GlCoreRhi final : public Rhi
|
|||
std::optional<Handle<Pipeline>> current_pipeline_;
|
||||
PrimitiveType current_primitive_type_ = PrimitiveType::kPoints;
|
||||
bool graphics_context_active_ = false;
|
||||
bool transfer_context_active_ = false;
|
||||
uint32_t graphics_context_generation_ = 0;
|
||||
uint32_t index_buffer_offset_ = 0;
|
||||
uint32_t transfer_context_generation_ = 0;
|
||||
|
||||
uint8_t stencil_front_reference_ = 0;
|
||||
uint8_t stencil_front_compare_mask_ = 0xFF;
|
||||
|
|
@ -193,26 +187,23 @@ public:
|
|||
virtual Rect get_renderbuffer_size(Handle<Renderbuffer> renderbuffer) override;
|
||||
virtual uint32_t get_buffer_size(Handle<Buffer> buffer) override;
|
||||
|
||||
virtual Handle<TransferContext> begin_transfer() override;
|
||||
virtual void end_transfer(Handle<TransferContext> handle) override;
|
||||
|
||||
virtual void update_buffer(
|
||||
Handle<TransferContext> ctx,
|
||||
Handle<GraphicsContext> ctx,
|
||||
Handle<Buffer> buffer,
|
||||
uint32_t offset,
|
||||
tcb::span<const std::byte> data
|
||||
) override;
|
||||
virtual void update_texture(
|
||||
Handle<TransferContext> ctx,
|
||||
Handle<GraphicsContext> ctx,
|
||||
Handle<Texture> texture,
|
||||
Rect region,
|
||||
srb2::rhi::PixelFormat data_format,
|
||||
tcb::span<const std::byte> data
|
||||
) override;
|
||||
virtual Handle<UniformSet>
|
||||
create_uniform_set(Handle<TransferContext> ctx, const CreateUniformSetInfo& info) override;
|
||||
create_uniform_set(Handle<GraphicsContext> ctx, const CreateUniformSetInfo& info) override;
|
||||
virtual Handle<BindingSet>
|
||||
create_binding_set(Handle<TransferContext> ctx, Handle<Pipeline> pipeline, const CreateBindingSetInfo& info)
|
||||
create_binding_set(Handle<GraphicsContext> ctx, Handle<Pipeline> pipeline, const CreateBindingSetInfo& info)
|
||||
override;
|
||||
|
||||
virtual Handle<GraphicsContext> begin_graphics() override;
|
||||
|
|
|
|||
|
|
@ -569,9 +569,6 @@ struct BindingSet
|
|||
{
|
||||
};
|
||||
|
||||
struct TransferContext
|
||||
{
|
||||
};
|
||||
struct GraphicsContext
|
||||
{
|
||||
};
|
||||
|
|
@ -607,26 +604,22 @@ struct Rhi
|
|||
virtual Rect get_renderbuffer_size(Handle<Renderbuffer> renderbuffer) = 0;
|
||||
virtual uint32_t get_buffer_size(Handle<Buffer> buffer) = 0;
|
||||
|
||||
virtual Handle<TransferContext> begin_transfer() = 0;
|
||||
virtual void end_transfer(Handle<TransferContext> handle) = 0;
|
||||
|
||||
// Transfer Context functions
|
||||
virtual void update_buffer(
|
||||
Handle<TransferContext> ctx,
|
||||
Handle<GraphicsContext> ctx,
|
||||
Handle<Buffer> buffer,
|
||||
uint32_t offset,
|
||||
tcb::span<const std::byte> data
|
||||
) = 0;
|
||||
virtual void update_texture(
|
||||
Handle<TransferContext> ctx,
|
||||
Handle<GraphicsContext> ctx,
|
||||
Handle<Texture> texture,
|
||||
Rect region,
|
||||
srb2::rhi::PixelFormat data_format,
|
||||
tcb::span<const std::byte> data
|
||||
) = 0;
|
||||
virtual Handle<UniformSet> create_uniform_set(Handle<TransferContext> ctx, const CreateUniformSetInfo& info) = 0;
|
||||
virtual Handle<UniformSet> create_uniform_set(Handle<GraphicsContext> ctx, const CreateUniformSetInfo& info) = 0;
|
||||
virtual Handle<BindingSet>
|
||||
create_binding_set(Handle<TransferContext> ctx, Handle<Pipeline> pipeline, const CreateBindingSetInfo& info) = 0;
|
||||
create_binding_set(Handle<GraphicsContext> ctx, Handle<Pipeline> pipeline, const CreateBindingSetInfo& info) = 0;
|
||||
|
||||
virtual Handle<GraphicsContext> begin_graphics() = 0;
|
||||
virtual void end_graphics(Handle<GraphicsContext> ctx) = 0;
|
||||
|
|
|
|||
|
|
@ -2165,7 +2165,7 @@ void S_ShowMusicCredit(void)
|
|||
}
|
||||
}
|
||||
|
||||
widthused -= V_ThinStringWidth(credittext, V_ALLOWLOWERCASE|V_6WIDTHSPACE);
|
||||
widthused -= V_ThinStringWidth(credittext, 0);
|
||||
|
||||
#define MUSICCREDITAPPEND(field)\
|
||||
if (field)\
|
||||
|
|
@ -2174,7 +2174,7 @@ void S_ShowMusicCredit(void)
|
|||
worklen = strlen(work);\
|
||||
if (worklen <= len)\
|
||||
{\
|
||||
workwidth = V_ThinStringWidth(work, V_ALLOWLOWERCASE|V_6WIDTHSPACE);\
|
||||
workwidth = V_ThinStringWidth(work, 0);\
|
||||
if (widthused >= workwidth)\
|
||||
{\
|
||||
strncat(credittext, work, len);\
|
||||
|
|
|
|||
|
|
@ -696,7 +696,7 @@ void SCR_ClosedCaptions(void)
|
|||
if (music && !gamestopped && (closedcaptions[i].t < flashingtics) && (closedcaptions[i].t & 1))
|
||||
continue;
|
||||
|
||||
flags = V_SNAPTORIGHT|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE;
|
||||
flags = V_SNAPTORIGHT|V_SNAPTOBOTTOM;
|
||||
y = basey-((i + 2)*10);
|
||||
|
||||
if (closedcaptions[i].b)
|
||||
|
|
|
|||
|
|
@ -305,6 +305,8 @@ static void I_ShowErrorMessageBox(const char *messagefordevelopers, boolean dump
|
|||
|
||||
// Rudementary word wrapping.
|
||||
// Simple and effective. Does not handle nonuniform letter sizes, etc. but who cares.
|
||||
// We can't use V_ScaledWordWrap, which this shares DNA with, because no guarantee
|
||||
// string character graphics exist as reference in the error handler...
|
||||
{
|
||||
size_t max = 0, maxatstart = 0, start = 0, width = 0, i;
|
||||
|
||||
|
|
|
|||
|
|
@ -983,7 +983,7 @@ void ST_drawTitleCard(void)
|
|||
by += 5;
|
||||
}
|
||||
|
||||
V_DrawRightAlignedThinString((BASEVIDWIDTH+bx)/2, by, V_6WIDTHSPACE, bossinfo.subtitle);
|
||||
V_DrawRightAlignedThinString((BASEVIDWIDTH+bx)/2, by, 0, bossinfo.subtitle);
|
||||
}
|
||||
|
||||
// Now draw the under-bar itself.
|
||||
|
|
@ -1172,7 +1172,7 @@ static void ST_overlayDrawer(void)
|
|||
if (!r_splitscreen)
|
||||
{
|
||||
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-40, V_HUDTRANSHALF, M_GetText("VIEWPOINT:"));
|
||||
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-32, V_HUDTRANSHALF|V_ALLOWLOWERCASE, player_names[stplyr-players]);
|
||||
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-32, V_HUDTRANSHALF, player_names[stplyr-players]);
|
||||
}
|
||||
else if (r_splitscreen == 1)
|
||||
{
|
||||
|
|
@ -1180,11 +1180,11 @@ static void ST_overlayDrawer(void)
|
|||
|
||||
INT32 y = (stplyr == &players[displayplayers[0]]) ? 4 : BASEVIDHEIGHT/2-12;
|
||||
sprintf(name, "VIEWPOINT: %s", player_names[stplyr-players]);
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-40, y, V_HUDTRANSHALF|V_ALLOWLOWERCASE|V_SNAPTOTOP|V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_SPLITSCREEN, name);
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-40, y, V_HUDTRANSHALF|V_SNAPTOTOP|V_SNAPTOBOTTOM|V_SNAPTORIGHT|V_SPLITSCREEN, name);
|
||||
}
|
||||
else if (r_splitscreen)
|
||||
{
|
||||
V_DrawCenteredThinString((vid.width/vid.dupx)/4, BASEVIDHEIGHT/2 - 12, V_HUDTRANSHALF|V_ALLOWLOWERCASE|V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_SPLITSCREEN, player_names[stplyr-players]);
|
||||
V_DrawCenteredThinString((vid.width/vid.dupx)/4, BASEVIDHEIGHT/2 - 12, V_HUDTRANSHALF|V_SNAPTOBOTTOM|V_SNAPTOLEFT|V_SPLITSCREEN, player_names[stplyr-players]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1257,17 +1257,17 @@ void ST_DrawDemoTitleEntry(void)
|
|||
#define x (BASEVIDWIDTH/2 - 139)
|
||||
#define y (BASEVIDHEIGHT/2)
|
||||
M_DrawTextBox(x, y + 4, MAXSTRINGLENGTH, 1);
|
||||
V_DrawString(x + 8, y + 12, V_ALLOWLOWERCASE, nametodraw);
|
||||
V_DrawString(x + 8, y + 12, 0, nametodraw);
|
||||
if (anim < 4)
|
||||
V_DrawCharacter(x + 8 + V_StringWidth(nametodraw, 0), y + 12,
|
||||
'_' | 0x80, false);
|
||||
|
||||
M_DrawTextBox(x + 30, y - 24, 26, 1);
|
||||
V_DrawString(x + 38, y - 16, V_ALLOWLOWERCASE, "Enter the name of the replay.");
|
||||
V_DrawString(x + 38, y - 16, 0, "Enter the name of the replay.");
|
||||
|
||||
M_DrawTextBox(x + 50, y + 20, 20, 1);
|
||||
V_DrawThinString(x + 58, y + 28, V_ALLOWLOWERCASE, "Escape - Cancel");
|
||||
V_DrawRightAlignedThinString(x + 220, y + 28, V_ALLOWLOWERCASE, "Enter - Confirm");
|
||||
V_DrawThinString(x + 58, y + 28, 0, "Escape - Cancel");
|
||||
V_DrawRightAlignedThinString(x + 220, y + 28, 0, "Enter - Confirm");
|
||||
#undef x
|
||||
#undef y
|
||||
}
|
||||
|
|
@ -1384,20 +1384,20 @@ void ST_Drawer(void)
|
|||
INT32 buttony = 2;
|
||||
|
||||
K_drawButtonAnim(buttonx - 76, buttony, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT, kp_button_b[1], leveltime);
|
||||
V_DrawRightAlignedThinString(buttonx - 55, buttony, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_ALLOWLOWERCASE|V_6WIDTHSPACE|V_YELLOWMAP, "or");
|
||||
V_DrawRightAlignedThinString(buttonx - 55, buttony, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_YELLOWMAP, "or");
|
||||
K_drawButtonAnim(buttonx - 55, buttony, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT, kp_button_x[1], leveltime);
|
||||
V_DrawRightAlignedThinString(buttonx - 2, buttony, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_ALLOWLOWERCASE|V_6WIDTHSPACE|V_YELLOWMAP, "Save replay");
|
||||
V_DrawRightAlignedThinString(buttonx - 2, buttony, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_YELLOWMAP, "Save replay");
|
||||
break;
|
||||
}
|
||||
case DSM_WILLAUTOSAVE:
|
||||
{
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH - 55, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_ALLOWLOWERCASE|V_6WIDTHSPACE|V_YELLOWMAP, "Replay will be saved.");
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH - 55, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_YELLOWMAP, "Replay will be saved.");
|
||||
K_drawButtonAnim(BASEVIDWIDTH - 56, 0, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT, kp_button_b[1], leveltime);
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_ALLOWLOWERCASE|V_6WIDTHSPACE|V_YELLOWMAP, "Change title");
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_YELLOWMAP, "Change title");
|
||||
break;
|
||||
}
|
||||
case DSM_WILLSAVE:
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_ALLOWLOWERCASE|V_6WIDTHSPACE|V_YELLOWMAP, "Replay will be saved.");
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_HUDTRANS|V_SNAPTOTOP|V_SNAPTORIGHT|V_YELLOWMAP, "Replay will be saved.");
|
||||
break;
|
||||
|
||||
case DSM_TITLEENTRY:
|
||||
|
|
|
|||
|
|
@ -128,12 +128,9 @@ int Draw::font_to_fontno(Font font)
|
|||
|
||||
INT32 Draw::default_font_flags(Font font)
|
||||
{
|
||||
INT32 flags = V_ALLOWLOWERCASE;
|
||||
INT32 flags = 0;
|
||||
|
||||
if (font == Font::kThin)
|
||||
{
|
||||
flags |= V_6WIDTHSPACE;
|
||||
}
|
||||
(void)font;
|
||||
|
||||
return flags;
|
||||
};
|
||||
|
|
|
|||
1002
src/v_video.cpp
1002
src/v_video.cpp
File diff suppressed because it is too large
Load diff
|
|
@ -175,7 +175,7 @@ void V_CubeApply(RGBA_t *input);
|
|||
#define V_SNAPTOLEFT 0x04000000 // for centering
|
||||
#define V_SNAPTORIGHT 0x08000000 // for centering
|
||||
|
||||
#define V_ALLOWLOWERCASE 0x10000000 // (strings only) allow fonts that have lowercase letters to use them
|
||||
#define V_FORCEUPPERCASE 0x10000000 // (strings only) prevents fonts that have lowercase letters from using them
|
||||
#define V_FLIP 0x10000000 // (patches only) Horizontal flip
|
||||
#define V_SLIDEIN 0x20000000 // Slide in from the sides on level load, depending on snap flags
|
||||
|
||||
|
|
@ -257,8 +257,9 @@ void V_DrawPromptBack(INT32 boxheight, INT32 color);
|
|||
INT32 V_DanceYOffset(INT32 counter);
|
||||
|
||||
// draw a single character
|
||||
void V_DrawCharacter(INT32 x, INT32 y, INT32 c, boolean lowercaseallowed);
|
||||
// draw a single character, but for the chat
|
||||
void V_DrawCharacterScaled(fixed_t x, fixed_t y, fixed_t scale, INT32 flags, int font, int c, UINT8 *colormap);
|
||||
void V_DrawCharacter(INT32 x, INT32 y, INT32 option, boolean lowercase);
|
||||
|
||||
void V_DrawChatCharacter(INT32 x, INT32 y, INT32 c, boolean lowercaseallowed, UINT8 *colormap);
|
||||
|
||||
UINT8 *V_GetStringColormap(INT32 colorflags);
|
||||
|
|
@ -272,9 +273,6 @@ UINT8 *V_GetStringColormap(INT32 colorflags);
|
|||
|
||||
INT32 V_LevelNameHeight(const char *string);
|
||||
|
||||
// wordwrap a string using the hu_font
|
||||
char *V_WordWrap(INT32 x, INT32 w, INT32 option, const char *string);
|
||||
|
||||
// draw a string using a font
|
||||
void V_DrawStringScaled(
|
||||
fixed_t x,
|
||||
|
|
@ -295,6 +293,15 @@ fixed_t V_StringScaledWidth(
|
|||
int fontno,
|
||||
const char *s);
|
||||
|
||||
char * V_ScaledWordWrap(
|
||||
fixed_t w,
|
||||
fixed_t scale,
|
||||
fixed_t spacescale,
|
||||
fixed_t lfscale,
|
||||
INT32 flags,
|
||||
int fontno,
|
||||
const char *s);
|
||||
|
||||
// draw a string using the hu_font
|
||||
#define V_DrawString( x,y,option,string ) \
|
||||
V__DrawDupxString (x,y,FRACUNIT,option,NULL,HU_FONT,string)
|
||||
|
|
@ -340,7 +347,7 @@ void V_DrawRightAlignedThinStringAtFixed(fixed_t x, fixed_t y, INT32 option, con
|
|||
// Draws a titlecard font string.
|
||||
// timer: when the letters start appearing (leave to 0 to disable)
|
||||
// threshold: when the letters start disappearing (leave to 0 to disable) (both are INT32 in case you supply negative values...)
|
||||
// NOTE: This function ignores most conventional string flags (V_RETURN8, V_ALLOWLOWERCASE ...)
|
||||
// NOTE: This function ignores most conventional string flags (V_RETURN8, V_FORCEUPPERCASE ...)
|
||||
// NOTE: This font only works with uppercase letters.
|
||||
void V_DrawTitleCardString(INT32 x, INT32 y, const char *str, INT32 flags, boolean bossmode, INT32 timer, INT32 threshold);
|
||||
|
||||
|
|
@ -373,6 +380,15 @@ void V_DrawProfileNum(INT32 x, INT32 y, INT32 flags, UINT8 num);
|
|||
void V_DrawCenteredTimerString(INT32 x, INT32 y, INT32 option, const char *string);
|
||||
void V_DrawRightAlignedTimerString(INT32 x, INT32 y, INT32 option, const char *string);
|
||||
|
||||
#define V_DrawMenuString( x,y,option,string ) \
|
||||
V__DrawDupxString (x,y,FRACUNIT,option,NULL,MENU_FONT,string)
|
||||
|
||||
#define V_MenuStringWidth( string,option ) \
|
||||
V__IntegerStringWidth ( FRACUNIT,option,MENU_FONT,string )
|
||||
|
||||
void V_DrawCenteredMenuString(INT32 x, INT32 y, INT32 option, const char *string);
|
||||
void V_DrawRightAlignedMenuString(INT32 x, INT32 y, INT32 option, const char *string);
|
||||
|
||||
#define V_DrawGamemodeString( x,y,option,cm,string ) \
|
||||
V__DrawDupxString (x,y,FRACUNIT,option,cm,GM_FONT,string)
|
||||
|
||||
|
|
|
|||
|
|
@ -573,13 +573,13 @@ void Y_PlayerStandingsDrawer(y_data_t *standings, INT32 xoffset)
|
|||
_isHighlightedPlayer(&players[pnum])
|
||||
? hilicol
|
||||
: 0
|
||||
)|V_ALLOWLOWERCASE|V_6WIDTHSPACE,
|
||||
),
|
||||
player_names[pnum]
|
||||
);
|
||||
|
||||
V_DrawRightAlignedThinString(
|
||||
x+118, y-2,
|
||||
V_ALLOWLOWERCASE|V_6WIDTHSPACE,
|
||||
0,
|
||||
standings->strval[i]
|
||||
);
|
||||
|
||||
|
|
@ -622,7 +622,7 @@ void Y_PlayerStandingsDrawer(y_data_t *standings, INT32 xoffset)
|
|||
{
|
||||
V_DrawThinString(
|
||||
x2, y-2,
|
||||
V_ALLOWLOWERCASE|V_6WIDTHSPACE,
|
||||
0,
|
||||
increasenum
|
||||
);
|
||||
}
|
||||
|
|
@ -630,7 +630,7 @@ void Y_PlayerStandingsDrawer(y_data_t *standings, INT32 xoffset)
|
|||
{
|
||||
V_DrawRightAlignedThinString(
|
||||
x2, y-2,
|
||||
V_ALLOWLOWERCASE|V_6WIDTHSPACE,
|
||||
0,
|
||||
increasenum
|
||||
);
|
||||
}
|
||||
|
|
@ -1247,7 +1247,7 @@ void Y_RoundQueueDrawer(y_data_t *standings, INT32 offset, boolean doanimations,
|
|||
void Y_IntermissionDrawer(void)
|
||||
{
|
||||
// INFO SEGMENT
|
||||
// Numbers are V_DrawRightAlignedThinString WITH v_6widthspace as flags
|
||||
// Numbers are V_DrawRightAlignedThinString as flags
|
||||
// resbar 1 (48,82) 5 (176, 82)
|
||||
// 2 (48, 96)
|
||||
|
||||
|
|
@ -1397,7 +1397,7 @@ skiptallydrawer:
|
|||
{
|
||||
if (speedscramble != -1 && speedscramble != gamespeed)
|
||||
{
|
||||
V_DrawCenteredThinString(BASEVIDWIDTH/2, 154, highlightflags|V_ALLOWLOWERCASE|V_SNAPTOBOTTOM,
|
||||
V_DrawCenteredThinString(BASEVIDWIDTH/2, 154, highlightflags|V_SNAPTOBOTTOM,
|
||||
va(M_GetText("Next race will be %s Speed!"), kartspeed_cons_t[1+speedscramble].strvalue));
|
||||
}
|
||||
}
|
||||
|
|
@ -1414,13 +1414,13 @@ finalcounter:
|
|||
INT32 buttony = 2;
|
||||
|
||||
K_drawButtonAnim(buttonx - 76, buttony, 0, kp_button_b[1], replayprompttic);
|
||||
V_DrawRightAlignedThinString(buttonx - 55, buttony, V_ALLOWLOWERCASE|V_6WIDTHSPACE|highlightflags, "or");
|
||||
V_DrawRightAlignedThinString(buttonx - 55, buttony, highlightflags, "or");
|
||||
K_drawButtonAnim(buttonx - 55, buttony, 0, kp_button_x[1], replayprompttic);
|
||||
V_DrawRightAlignedThinString(buttonx - 2, buttony, V_ALLOWLOWERCASE|V_6WIDTHSPACE|highlightflags, "Save replay");
|
||||
V_DrawRightAlignedThinString(buttonx - 2, buttony, highlightflags, "Save replay");
|
||||
break;
|
||||
}
|
||||
case DSM_SAVED:
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, V_ALLOWLOWERCASE|V_6WIDTHSPACE|highlightflags, "Replay saved!");
|
||||
V_DrawRightAlignedThinString(BASEVIDWIDTH - 2, 2, highlightflags, "Replay saved!");
|
||||
break;
|
||||
|
||||
case DSM_TITLEENTRY:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue