diff --git a/src/lua_hudlib_drawlist.c b/src/lua_hudlib_drawlist.c index ad5a62bbc..a3b59b9f6 100644 --- a/src/lua_hudlib_drawlist.c +++ b/src/lua_hudlib_drawlist.c @@ -15,6 +15,7 @@ #include +#include "r_fps.h" #include "v_video.h" #include "z_zone.h" @@ -65,6 +66,7 @@ typedef struct drawitem_s { INT32 threshold; boolean bossmode; boolean p4; + enum viewcontext_e splitnum; // save view number to account for splitscreen } drawitem_t; // The internal structure of a drawlist. @@ -202,6 +204,7 @@ void LUA_HUD_AddDraw( item->patch = patch; item->flags = flags; item->colormap = colormap; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawScaled( @@ -223,6 +226,7 @@ void LUA_HUD_AddDrawScaled( item->patch = patch; item->flags = flags; item->colormap = colormap; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawStretched( @@ -246,6 +250,7 @@ void LUA_HUD_AddDrawStretched( item->patch = patch; item->flags = flags; item->colormap = colormap; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawNum( @@ -263,6 +268,7 @@ void LUA_HUD_AddDrawNum( item->y = y; item->num = num; item->flags = flags; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawPaddedNum( @@ -282,6 +288,7 @@ void LUA_HUD_AddDrawPaddedNum( item->num = num; item->digits = digits; item->flags = flags; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawPingNum( @@ -301,6 +308,7 @@ void LUA_HUD_AddDrawPingNum( item->flags = flags; item->num = num; item->colormap = colormap; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawFill( @@ -320,6 +328,7 @@ void LUA_HUD_AddDrawFill( item->w = w; item->h = h; item->c = c; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawString( @@ -339,6 +348,7 @@ void LUA_HUD_AddDrawString( item->stroffset = CopyString(list, str); item->flags = flags; item->align = align; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddFadeScreen( @@ -352,6 +362,7 @@ void LUA_HUD_AddFadeScreen( item->type = DI_FadeScreen; item->color = color; item->strength = strength; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawTitleCardString( @@ -377,6 +388,7 @@ void LUA_HUD_AddDrawTitleCardString( item->timer = timer; item->threshold = threshold; item->p4 = p4; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddDrawKartString( @@ -394,6 +406,7 @@ void LUA_HUD_AddDrawKartString( item->y = y; item->stroffset = CopyString(list, str); item->flags = flags; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddSetClipRect( @@ -413,6 +426,7 @@ void LUA_HUD_AddSetClipRect( item->w = w; item->h = h; item->flags = flags; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_AddClearClipRect( @@ -422,6 +436,7 @@ void LUA_HUD_AddClearClipRect( size_t i = AllocateDrawItem(list); drawitem_t *item = &list->items[i]; item->type = DI_ClearClipRect; + item->splitnum = R_GetViewNumber(); } void LUA_HUD_DrawList(huddrawlist_h list) @@ -436,6 +451,10 @@ void LUA_HUD_DrawList(huddrawlist_h list) { drawitem_t *item = &list->items[i]; const char *itemstr = &list->strbuf[item->stroffset]; + enum viewcontext_e old_viewcontext = viewcontext; + + // Set view context to account for V_SPLITSCREEN + R_SetViewContext(item->splitnum); switch (item->type) { @@ -514,5 +533,8 @@ void LUA_HUD_DrawList(huddrawlist_h list) I_Error("can't draw draw list item: invalid draw list item type"); continue; } + + // Reset view context back, just incase of some stupid shenanigans + R_SetViewContext(old_viewcontext); } }