diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 0b6ae694b..3b3db3d74 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -524,6 +524,10 @@ consvar_t cv_pingmeasurement = CVAR_INIT ("pingmeasurement", "Frames", CV_SAVE, consvar_t cv_showlapemblem = CVAR_INIT ("showlapemblem", "On", CV_SAVE, CV_OnOff, NULL); +consvar_t cv_showminimapnames = CVAR_INIT ("showminimapnames", "Off", CV_SAVE, CV_OnOff, NULL); +consvar_t cv_showminimapangle = CVAR_INIT ("showminimapnames", "On", CV_SAVE, CV_OnOff, NULL); +consvar_t cv_minihead = CVAR_INIT ("smallminimapplayers", "Off", CV_SAVE, CV_OnOff, NULL); + consvar_t cv_showviewpointtext = CVAR_INIT ("showviewpointtext", "On", CV_SAVE, CV_OnOff, NULL); // Intermission time Tails 04-19-2002 @@ -822,6 +826,9 @@ void D_RegisterServerCommands(void) CV_RegisterVar(&cv_pingtimeout); CV_RegisterVar(&cv_showping); CV_RegisterVar(&cv_pingmeasurement); + CV_RegisterVar(&cv_showminimapnames); + CV_RegisterVar(&cv_showminimapangle); + CV_RegisterVar(&cv_minihead); CV_RegisterVar(&cv_showlapemblem); CV_RegisterVar(&cv_showviewpointtext); diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 72f0a8890..abf3dcb6d 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -116,6 +116,11 @@ extern consvar_t cv_lagless; extern consvar_t cv_pingtimeout; extern consvar_t cv_showping; extern consvar_t cv_pingmeasurement; + +extern consvar_t cv_showminimapnames; +extern consvar_t cv_showminimapangle; +extern consvar_t cv_minihead; + extern consvar_t cv_showlapemblem; extern consvar_t cv_showviewpointtext; diff --git a/src/k_hud.c b/src/k_hud.c index 0d109a85d..83777e8a2 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -3178,6 +3178,13 @@ static void K_drawKartMinimapIcon(fixed_t objx, fixed_t objy, INT32 hudx, INT32 fixed_t amnumxpos, amnumypos; INT32 amxpos, amypos; + fixed_t scale = FRACUNIT; + + if (!cv_showminimapangle.value && (icon == kp_minimapdot)) + return; + + if (cv_minihead.value) + scale = FRACUNIT / 2; amnumxpos = (FixedMul(objx, minimapinfo.zoom) - minimapinfo.offs_x); amnumypos = -(FixedMul(objy, minimapinfo.zoom) - minimapinfo.offs_y); @@ -3188,7 +3195,70 @@ static void K_drawKartMinimapIcon(fixed_t objx, fixed_t objy, INT32 hudx, INT32 amxpos = amnumxpos + ((hudx + (SHORT(minimapinfo.minimap_pic->width)-SHORT(icon->width))/2)<height)-SHORT(icon->height))/2)<mo) + { + return; + } + + fixed_t amnumxpos, amnumypos; + INT32 amxpos, amypos; + char color_prefix[2]; + UINT8 skin = 0; + + amnumxpos = (FixedMul(objx, minimapinfo.zoom) - minimapinfo.offs_x); + amnumypos = -(FixedMul(objy, minimapinfo.zoom) - minimapinfo.offs_y); + + if (encoremode) + amnumxpos = -amnumxpos; + + skin = ((skin_t*)players->mo->skin)-skins; + + amxpos = amnumxpos + ((hudx + (SHORT(minimapinfo.minimap_pic->width)-SHORT(faceprefix[skin][FACE_MINIMAP]->width))/2)<height)-SHORT(faceprefix[skin][FACE_MINIMAP]->height))/2)<mo->color].chatcolor; + if (chatcolor > V_TANMAP) + { + sprintf(color_prefix, "%c", '\x80'); + } + else + { + sprintf(color_prefix, "%c", '\x80' + (chatcolor >> V_CHARCOLORSHIFT)); + } + } + + + const char *player_name = va("%s%s", color_prefix, player_names[player - players]); + V_DrawCenteredSmallStringAtFixed(amxpos + (4*FRACUNIT), amypos - (3*FRACUNIT), V_ALLOWLOWERCASE|flags, player_name); } static void K_drawKartMinimapDot(fixed_t objx, fixed_t objy, INT32 hudx, INT32 hudy, INT32 flags, UINT8 color, UINT8 size) @@ -3246,7 +3316,7 @@ static void K_drawKartMinimapWaypoint(waypoint_t *wp, INT32 hudx, INT32 hudy, IN K_drawKartMinimapDot(wp->mobj->x, wp->mobj->y, hudx, hudy, flags | V_NOSCALESTART, pal, size); } -#define ICON_DOT_RADIUS (10) +#define ICON_DOT_RADIUS cv_minihead.value ? 8 : 10 static void K_drawKartMinimap(void) { @@ -3589,6 +3659,8 @@ static void K_drawKartMinimap(void) colormap ); } + + K_drawKartMinimapNametag(interpx, interpy, x, y, splitflags, mobj->player); } } diff --git a/src/lua_hudlib.c b/src/lua_hudlib.c index a5a5edc4f..46d5b8a02 100644 --- a/src/lua_hudlib.c +++ b/src/lua_hudlib.c @@ -722,6 +722,9 @@ static int libd_drawOnMinimap(lua_State *L) list = (huddrawlist_h) lua_touserdata(L, -1); lua_pop(L, 1); + if (cv_minihead.value) + scale /= 2; + if (LUA_HUD_IsDrawListValid(list)) LUA_HUD_AddDrawScaled(list, amxpos, amypos, scale, patch, splitflags, colormap); else diff --git a/src/v_video.c b/src/v_video.c index 60d7e53b8..8b96fa0b6 100644 --- a/src/v_video.c +++ b/src/v_video.c @@ -2341,6 +2341,12 @@ void V_DrawCenteredSmallString(INT32 x, INT32 y, INT32 option, const char *strin V_DrawSmallString(x, y, option, string); } +void V_DrawCenteredSmallStringAtFixed(fixed_t x, fixed_t y, INT32 option, const char *string) +{ + x -= (V_SmallStringWidth(string, option) / 2)<>1,option,HU_FONT,string) void V_DrawCenteredSmallString(INT32 x, INT32 y, INT32 option, const char *string); +void V_DrawCenteredSmallStringAtFixed(fixed_t x, fixed_t y, INT32 option, const char *string); void V_DrawRightAlignedSmallString(INT32 x, INT32 y, INT32 option, const char *string); // draw a string using the tny_font