diff --git a/src/hu_stuff.c b/src/hu_stuff.c index 70af13dd..b4337306 100644 --- a/src/hu_stuff.c +++ b/src/hu_stuff.c @@ -109,8 +109,6 @@ static patch_t *crosshair[HU_CROSSHAIRS]; // 3 precached crosshair graphics // protos. // ------- static void HU_DrawRankings(void); -//static void HU_DrawCoopOverlay(void); -//static void HU_DrawNetplayCoopOverlay(void); //====================================================================== // KEYBOARD LAYOUTS FOR ENTERING TEXT @@ -2112,12 +2110,7 @@ void HU_Drawer(void) #ifdef HAVE_BLUA if (LUA_HudEnabled(hud_rankings)) #endif - HU_DrawRankings(); - //if (gametype == GT_COOP) - //HU_DrawNetplayCoopOverlay(); - } - //else - //HU_DrawCoopOverlay(); + HU_DrawRankings(); #ifdef HAVE_BLUA LUAh_ScoresHUD(); #endif @@ -2793,65 +2786,6 @@ static void HU_DrawRankings(void) HU_DrawSpectatorTicker(); } -/*static void HU_DrawCoopOverlay(void) -{ - if (token -#ifdef HAVE_BLUA - && LUA_HudEnabled(hud_tokens) -#endif - ) - { - V_DrawString(168, 176, 0, va("- %d", token)); - V_DrawSmallScaledPatch(148, 172, 0, tokenicon); - } - -#ifdef HAVE_BLUA - if (LUA_HudEnabled(hud_tabemblems)) -#endif - if (!modifiedgame || savemoddata) - { - V_DrawString(160, 144, 0, va("- %d/%d", M_CountEmblems(), numemblems+numextraemblems)); - V_DrawScaledPatch(128, 144 - SHORT(emblemicon->height)/4, 0, emblemicon); - } - -#ifdef HAVE_BLUA - if (!LUA_HudEnabled(hud_coopemeralds)) - return; -#endif - - if (emeralds & EMERALD1) - V_DrawScaledPatch((BASEVIDWIDTH/2)-8 , (BASEVIDHEIGHT/3)-32, 0, emeraldpics[0]); - if (emeralds & EMERALD2) - V_DrawScaledPatch((BASEVIDWIDTH/2)-8+24, (BASEVIDHEIGHT/3)-16, 0, emeraldpics[1]); - if (emeralds & EMERALD3) - V_DrawScaledPatch((BASEVIDWIDTH/2)-8+24, (BASEVIDHEIGHT/3)+16, 0, emeraldpics[2]); - if (emeralds & EMERALD4) - V_DrawScaledPatch((BASEVIDWIDTH/2)-8 , (BASEVIDHEIGHT/3)+32, 0, emeraldpics[3]); - if (emeralds & EMERALD5) - V_DrawScaledPatch((BASEVIDWIDTH/2)-8-24, (BASEVIDHEIGHT/3)+16, 0, emeraldpics[4]); - if (emeralds & EMERALD6) - V_DrawScaledPatch((BASEVIDWIDTH/2)-8-24, (BASEVIDHEIGHT/3)-16, 0, emeraldpics[5]); - if (emeralds & EMERALD7) - V_DrawScaledPatch((BASEVIDWIDTH/2)-8 , (BASEVIDHEIGHT/3) , 0, emeraldpics[6]); -} - -static void HU_DrawNetplayCoopOverlay(void) -{ - int i; - -#ifdef HAVE_BLUA - if (!LUA_HudEnabled(hud_coopemeralds)) - return; -#endif - - for (i = 0; i < 7; ++i) - { - if (emeralds & (1 << i)) - V_DrawScaledPatch(20 + (i * 20), 6, 0, emeraldpics[i]); - } -}*/ - - // Interface to CECHO settings for the outside world, avoiding the // expense (and security problems) of going via the console buffer. void HU_ClearCEcho(void) diff --git a/src/k_kart.c b/src/k_kart.c index ee59566f..08c747bc 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -20,6 +20,7 @@ #include "m_cond.h" #include "k_kart.h" #include "f_finale.h" +#include "lua_hud.h" // For Lua hud checks // SOME IMPORTANT VARIABLES DEFINED IN DOOMDEF.H: // gamespeed is cc (0 for easy, 1 for normal, 2 for hard) @@ -7545,7 +7546,12 @@ void K_drawKartHUD(void) K_drawKartFirstPerson(); if (splitscreen == 2) // Player 4 in 3P is the minimap :p + { + #ifdef HAVE_BLUA + if (LUA_HudEnabled(hud_minimap)) + #endif K_drawKartMinimap(); + } // Draw full screen stuff that turns off the rest of the HUD if (mapreset && stplyr == &players[displayplayer]) @@ -7570,25 +7576,45 @@ void K_drawKartHUD(void) K_drawKartPlayerCheck(); if (splitscreen == 0 && cv_kartminimap.value) - K_drawKartMinimap(); // 3P splitscreen is handled above + { + #ifdef HAVE_BLUA + if (LUA_HudEnabled(hud_minimap)) + #endif + K_drawKartMinimap(); // 3P splitscreen is handled above + + } // Draw the item window - K_drawKartItem(); + #ifdef HAVE_BLUA + if (LUA_HudEnabled(hud_item)) + #endif + K_drawKartItem(); // Draw WANTED status if (G_BattleGametype()) - K_drawKartWanted(); + { + #ifdef HAVE_BLUA + if (LUA_HudEnabled(hud_wanted)) + #endif + K_drawKartWanted(); + } // If not splitscreen, draw... if (!splitscreen) { // Draw the timestamp - K_drawKartTimestamp(stplyr->realtime, TIME_X, TIME_Y, gamemap, true); + #ifdef HAVE_BLUA + if (LUA_HudEnabled(hud_time)) + #endif + K_drawKartTimestamp(stplyr->realtime, TIME_X, TIME_Y, gamemap, true); if (!modeattacking) { // The top-four faces on the left - isfreeplay = K_drawKartPositionFaces(); + #ifdef HAVE_BLUA + if (LUA_HudEnabled(hud_minirankings)) + #endif + isfreeplay = K_drawKartPositionFaces(); } } @@ -7597,12 +7623,18 @@ void K_drawKartHUD(void) if (G_RaceGametype()) // Race-only elements { // Draw the lap counter - K_drawKartLaps(); + #ifdef HAVE_BLUA + if (LUA_HudEnabled(hud_gametypeinfo)) + #endif + K_drawKartLaps(); if (!splitscreen) { // Draw the speedometer // TODO: Make a better speedometer. + #ifdef HAVE_BLUA + if (LUA_HudEnabled(hud_speedometer)) + #endif K_drawKartSpeedometer(); } @@ -7611,7 +7643,10 @@ void K_drawKartHUD(void) else if (!modeattacking) { // Draw the numerical position - K_DrawKartPositionNum(stplyr->kartstuff[k_position]); + #ifdef HAVE_BLUA + if (LUA_HudEnabled(hud_position)) + #endif + K_DrawKartPositionNum(stplyr->kartstuff[k_position]); } else //if (!(demoplayback && hu_showscores)) { @@ -7622,7 +7657,10 @@ void K_drawKartHUD(void) else if (G_BattleGametype()) // Battle-only { // Draw the hits left! - K_drawKartBumpersOrKarma(); + #ifdef HAVE_BLUA + if (LUA_HudEnabled(hud_gametypeinfo)) + #endif + K_drawKartBumpersOrKarma(); } } diff --git a/src/lua_hud.h b/src/lua_hud.h index ba0a1d89..17281b4e 100644 --- a/src/lua_hud.h +++ b/src/lua_hud.h @@ -13,26 +13,17 @@ enum hud { hud_stagetitle = 0, hud_textspectator, - // Singleplayer / Co-op - hud_score, + hud_time, - hud_rings, - hud_lives, - // Match / CTF / Tag / Ringslinger - hud_weaponrings, - hud_powerstones, - // NiGHTS mode - hud_nightslink, - hud_nightsdrill, - hud_nightsrings, - hud_nightsscore, - hud_nightstime, - hud_nightsrecords, - // TAB scores overlays - hud_rankings, - hud_coopemeralds, - hud_tokens, - hud_tabemblems, + hud_gametypeinfo, + hud_minimap, + hud_item, + hud_position, + hud_minirankings, // Rankings to the left + hud_wanted, + hud_speedometer, + hud_rankings, // Tab rankings + hud_MAX }; diff --git a/src/lua_hudlib.c b/src/lua_hudlib.c index e8e9e173..703cbbbd 100644 --- a/src/lua_hudlib.c +++ b/src/lua_hudlib.c @@ -39,25 +39,15 @@ static const char *const hud_disable_options[] = { "stagetitle", "textspectator", - "score", "time", - "rings", - "lives", - - "weaponrings", - "powerstones", - - "nightslink", - "nightsdrill", - "nightsrings", - "nightsscore", - "nightstime", - "nightsrecords", - + "gametypeinfo", // Bumpers / Karma / Laps depending on gametype + "minimap", + "item", + "position", + "minirankings", // Gametype rankings to the left + "wanted", + "speedometer", "rankings", - "coopemeralds", - "tokens", - "tabemblems", NULL}; enum hudinfo { @@ -584,6 +574,15 @@ static int libd_renderer(lua_State *L) return 1; } +// Lat': Get cv_translucenthud's value for HUD rendering as a normal V_xxTRANS int instead of V_HUDTRANS. This is useful if we want to work from that transparency value +// Could as well be thrown in global vars for ease of access but I guess it makes sense for it to be a HUD fn +static int libd_getlocaltransflag(lua_State *L) +{ + HUDONLY + lua_pushinteger(L, (10-cv_translucenthud.value)*V_10TRANS); // A bit weird that it's called "translucenthud" yet 10 is fully opaque :V + return 1; +} + static luaL_Reg lib_draw[] = { {"patchExists", libd_patchExists}, {"cachePatch", libd_cachePatch}, @@ -601,6 +600,7 @@ static luaL_Reg lib_draw[] = { {"dupx", libd_dupx}, {"dupy", libd_dupy}, {"renderer", libd_renderer}, + {"localTransFlag", libd_getlocaltransflag}, {NULL, NULL} }; @@ -624,6 +624,18 @@ static int lib_huddisable(lua_State *L) return 0; } +// 30/10/18: Lat': Why the FUCK is this NOT in vanilla +static int lib_hudenabled(lua_State *L) +{ + enum hud option = luaL_checkoption(L, 1, NULL, hud_disable_options); + if (hud_enabled[option/8] & (1<<(option%8))) + lua_pushboolean(L, true); + else + lua_pushboolean(L, false); + + return 1; +} + // add a HUD element for rendering static int lib_hudadd(lua_State *L) { @@ -648,6 +660,7 @@ static int lib_hudadd(lua_State *L) static luaL_Reg lib_hud[] = { {"enable", lib_hudenable}, {"disable", lib_huddisable}, + {"enabled", lib_hudenabled}, {"add", lib_hudadd}, {NULL, NULL} };