softcode mapthumbnail drawing

This commit is contained in:
NepDisk 2025-06-20 12:03:37 -04:00
parent 875f1d44b2
commit 1d600210fa
4 changed files with 45 additions and 23 deletions

View file

@ -933,9 +933,9 @@ static void SV_SendServerInfo(INT32 node, tic_t servertime)
UINT8 *p;
size_t mirror_length;
const char *httpurl = cv_httpsource.string;
UINT8 prefgametype = (cv_kartgametypepreference.value == -1)
/*UINT8 prefgametype = (cv_kartgametypepreference.value == -1)
? gametype
: cv_kartgametypepreference.value;
: cv_kartgametypepreference.value;*/
netbuffer->packettype = PT_SERVERINFO;
netbuffer->u.serverinfo._255 = 255;

View file

@ -1888,6 +1888,7 @@ static menuitemflags_t parsestyle(const char *p)
else if STYLE("THIN", ITF_THIN)
else if STYLE("HEADER", ITF_HEADER|IT_HIGHLIGHT)
else if STYLE("PATCH", IT_PATCH)
else if STYLE("MAPTHUMBNAIL", IT_MAPTHUMBNAIL)
if STYLE("SMALL", IT_SMALL)

View file

@ -2511,11 +2511,43 @@ static INT32 M_DrawMenuItem(menuitem_t *item, INT16 x, INT16 y, INT32 vflags, bo
if (item->status & IT_HIGHLIGHT)
cmap = V_GetStringColormap(highlightflags);
else if (item->status & IT_RECOMMENDEDHIGHLIGHT)
cmap = V_GetStringColormap(recommendedflags);
else if (item->status & IT_WARNINGHIGHLIGHT)
cmap = V_GetStringColormap(warningflags);
V_DrawFixedPatch((x - width)<<FRACBITS, y<<FRACBITS, scale, vflags & ~V_FLIP, p, cmap);
return width;
}
if (item->status & IT_MAPTHUMBNAIL)
{
INT32 mapnum = item->argument;
UINT8 *cmap = NULL;
patch_t *current_map;
fixed_t scale;
if (mapnum == INT32_MIN)
{
scale = FRACUNIT/2;
current_map = W_CachePatchName("RANDOMLV", PU_CACHE);
}
else
{
scale = M_GetMapThumbnail(mapnum, &current_map)/4;
}
if (item->status & IT_HIGHLIGHT)
cmap = V_GetStringColormap(highlightflags);
else if (item->status & IT_RECOMMENDEDHIGHLIGHT)
cmap = V_GetStringColormap(recommendedflags);
else if (item->status & IT_WARNINGHIGHLIGHT)
cmap = V_GetStringColormap(warningflags);
V_DrawFixedPatch(x<<FRACBITS, y<<FRACBITS, scale, 0, current_map, cmap);
return scale;
}
switch (item->status & ITF_MASK)
{
case ITF_THIN2:
@ -7997,6 +8029,8 @@ INT32 MR_EnterViewServer(INT32 choice)
servergametype = zva(PU_STATIC, NULL, "%s: %s", serverlist[joinnode].info.gametypename, speedstring);
M_SetItemArgument(MN_VIEWSERVER, "THUMBNAIL", G_LevelTitleToMapNum(serverlist[joinnode].info.maptitle));
M_SetItemText(MN_VIEWSERVER, "SERVERNAME", servername);
M_SetItemText(MN_VIEWSERVER, "SERVERPING", serverping);
M_SetItemText(MN_VIEWSERVER, "SERVERMAP", servermap);
@ -8084,22 +8118,8 @@ INT32 MR_HandleViewServer(INT32 choice)
void M_DrawViewServer(void)
{
const char *maptitle = serverlist[joinnode].info.maptitle;
INT32 mapnum = G_LevelTitleToMapNum(maptitle);
patch_t *current_map;
V_DrawFill(M_GetItemX(MN_VIEWSERVER, "TOPBOXXY"), M_GetItemY(MN_VIEWSERVER, "TOPBOXXY"), M_GetItemX(MN_VIEWSERVER, "TOPBOXWH"), M_GetItemY(MN_VIEWSERVER, "TOPBOXWH"), 159);
if (mapnum == INT32_MIN)
{
V_DrawSmallScaledPatch(M_GetItemX(MN_VIEWSERVER, "MAPPIC"), M_GetItemY(MN_VIEWSERVER, "MAPPIC"), 0, W_CachePatchName("RANDOMLV", PU_CACHE));
}
else
{
fixed_t scale = M_GetMapThumbnail(mapnum, &current_map)/4;
V_DrawFixedPatch(M_GetItemX(MN_VIEWSERVER, "MAPPIC")<<FRACBITS, M_GetItemY(MN_VIEWSERVER, "MAPPIC")<<FRACBITS, scale, 0, current_map, NULL);
}
V_DrawFill(M_GetItemX(MN_VIEWSERVER, "MIDBOXXY"), M_GetItemY(MN_VIEWSERVER, "MIDBOXXY"), M_GetItemX(MN_VIEWSERVER, "MIDBOXWH"), M_GetItemY(MN_VIEWSERVER, "MIDBOXWH"), 159);
M_DrawGenericMenu();

View file

@ -140,15 +140,16 @@ typedef enum
IT_RIGHT = 1<<12, // right-align the text/patch
IT_SMALL = 1<<13, // draw at half scale
IT_HIGHLIGHT = 1<<14, // add highlightflags to text/patch
IT_RECOMMENDEDHIGHLIGHT = 1<<15,
IT_WARNINGHIGHLIGHT = 1<<16,
IT_RECOMMENDEDHIGHLIGHT = 1<<15, // add recommendedflags to text/patch
IT_WARNINGHIGHLIGHT = 1<<16, // add warningflags to text/patch
IT_MAPTHUMBNAIL = 1<<17, // display a mapthumbnail instead of text
ITF_STANDARD = 0<<17, // standard font
ITF_HEADER = 1<<17, // standard font, with an offset to the left
ITF_THIN = 2<<17, // thin font
ITF_THIN2 = 3<<17, // thin font with tighter spacing
ITF_STANDARD = 0<<18, // standard font
ITF_HEADER = 1<<18, // standard font, with an offset to the left
ITF_THIN = 2<<18, // thin font
ITF_THIN2 = 3<<18, // thin font with tighter spacing
ITF_MASK = 3<<17,
ITF_MASK = 3<<18,
IT_STYLE = IT_PATCH|IT_CENTER|IT_RIGHT|IT_SMALL|IT_HIGHLIGHT|ITF_MASK,
} menuitemflags_t;