mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-12 22:02:12 +00:00
* Optimise the new static code further.
* Update all the other V_DrawCroppedPatch calls to match the new behaviour. * Fix the OGL version of V_DrawCroppedPatch to match the new behaviour. (To justify my changes: It's not exposed to Lua, and the function signature was a mess. This way it's easier to mentally map how it would work.)
This commit is contained in:
parent
b2e89f6832
commit
df1e5eb9b7
3 changed files with 31 additions and 23 deletions
|
@ -281,16 +281,16 @@ void HWR_DrawCroppedPatch(GLPatch_t *gpatch, fixed_t x, fixed_t y, fixed_t pscal
|
|||
sdupx = sdupy = 2.0f;
|
||||
|
||||
v[0].x = v[3].x = (cx*sdupx - gpatch->leftoffset * pdupx) / vid.width - 1;
|
||||
v[2].x = v[1].x = (cx*sdupx + ((w-sx) - gpatch->leftoffset) * pdupx) / vid.width - 1;
|
||||
v[2].x = v[1].x = (cx*sdupx + ((w) - gpatch->leftoffset) * pdupx) / vid.width - 1;
|
||||
v[0].y = v[1].y = 1 - (cy*sdupy - gpatch->topoffset * pdupy) / vid.height;
|
||||
v[2].y = v[3].y = 1 - (cy*sdupy + ((h-sy) - gpatch->topoffset) * pdupy) / vid.height;
|
||||
v[2].y = v[3].y = 1 - (cy*sdupy + ((h) - gpatch->topoffset) * pdupy) / vid.height;
|
||||
|
||||
v[0].z = v[1].z = v[2].z = v[3].z = 1.0f;
|
||||
|
||||
v[0].sow = v[3].sow = ((sx)/(float)gpatch->width )*gpatch->max_s;
|
||||
v[2].sow = v[1].sow = ((w )/(float)gpatch->width )*gpatch->max_s;
|
||||
v[0].tow = v[1].tow = ((sy)/(float)gpatch->height)*gpatch->max_t;
|
||||
v[2].tow = v[3].tow = ((h )/(float)gpatch->height)*gpatch->max_t;
|
||||
v[0].sow = v[3].sow = ((sx )/(float)gpatch->width )*gpatch->max_s;
|
||||
v[2].sow = v[1].sow = ((sx+w)/(float)gpatch->width )*gpatch->max_s;
|
||||
v[0].tow = v[1].tow = ((sy )/(float)gpatch->height)*gpatch->max_t;
|
||||
v[2].tow = v[3].tow = ((sy+h)/(float)gpatch->height)*gpatch->max_t;
|
||||
|
||||
flags = BLENDMODE|PF_Clip|PF_NoZClip|PF_NoDepthTest;
|
||||
|
||||
|
|
40
src/m_menu.c
40
src/m_menu.c
|
@ -3085,26 +3085,34 @@ void M_DrawTextBox(INT32 x, INT32 y, INT32 width, INT32 boxlines)
|
|||
*/
|
||||
}
|
||||
|
||||
#define scale FRACUNIT/2
|
||||
|
||||
static fixed_t staticalong = 0;
|
||||
|
||||
static void M_DrawStaticBox(fixed_t x, fixed_t y, INT32 flags, fixed_t w, fixed_t h)
|
||||
{
|
||||
patch_t *patch = W_CachePatchName("LSSTATIC", PU_CACHE);
|
||||
INT32 pw = SHORT(patch->width);
|
||||
fixed_t sw = FixedDiv(w, scale);
|
||||
patch_t *patch;
|
||||
fixed_t sw, pw;
|
||||
|
||||
if (staticalong >= (pw - sw))
|
||||
staticalong = 0;
|
||||
patch = W_CachePatchName("LSSTATIC", PU_CACHE);
|
||||
pw = SHORT(patch->width) - (sw = w*2); //FixedDiv(w, scale); -- for scale FRACUNIT/2
|
||||
|
||||
V_DrawCroppedPatch(x<<FRACBITS, y<<FRACBITS, scale, flags, patch, staticalong, 0, sw, FixedDiv(h, scale));
|
||||
/*if (pw > 0) -- model code for modders providing weird LSSTATIC
|
||||
{
|
||||
if (staticalong > pw)
|
||||
staticalong -= pw;
|
||||
}
|
||||
else
|
||||
staticalong = 0;*/
|
||||
|
||||
staticalong += M_RandomRange(sw/2, 2*sw);
|
||||
if (staticalong > pw) // simplified for base LSSTATIC
|
||||
staticalong -= pw;
|
||||
|
||||
V_DrawCroppedPatch(x<<FRACBITS, y<<FRACBITS, FRACUNIT/2, flags, patch, staticalong, 0, sw, h*2); // FixedDiv(h, scale)); -- for scale FRACUNIT/2
|
||||
|
||||
staticalong += sw; //M_RandomRange(sw/2, 2*sw); -- turns out less randomisation looks better because immediately adjacent frames can't end up close to each other
|
||||
|
||||
W_UnlockCachedPatch(patch);
|
||||
}
|
||||
|
||||
#undef scale
|
||||
|
||||
//
|
||||
// Draw border for the savegame description
|
||||
//
|
||||
|
@ -6946,9 +6954,9 @@ static void M_DrawSetupChoosePlayerMenu(void)
|
|||
{
|
||||
patch = W_CachePatchName(description[prev].picname, PU_CACHE);
|
||||
if (SHORT(patch->width) >= 256)
|
||||
V_DrawCroppedPatch(8<<FRACBITS, (my + 8)<<FRACBITS, FRACUNIT/2, 0, patch, 0, SHORT(patch->height) - 64 + o*2, SHORT(patch->width), SHORT(patch->height));
|
||||
V_DrawCroppedPatch(8<<FRACBITS, (my + 8)<<FRACBITS, FRACUNIT/2, 0, patch, 0, SHORT(patch->height) + 2*(o-32), SHORT(patch->width), 32 - o);
|
||||
else
|
||||
V_DrawCroppedPatch(8<<FRACBITS, (my + 8)<<FRACBITS, FRACUNIT, 0, patch, 0, SHORT(patch->height) - 32 + o, SHORT(patch->width), SHORT(patch->height));
|
||||
V_DrawCroppedPatch(8<<FRACBITS, (my + 8)<<FRACBITS, FRACUNIT, 0, patch, 0, SHORT(patch->height) + o - 32, SHORT(patch->width), 32 - o);
|
||||
W_UnlockCachedPatch(patch);
|
||||
}
|
||||
|
||||
|
@ -6957,7 +6965,7 @@ static void M_DrawSetupChoosePlayerMenu(void)
|
|||
{
|
||||
patch = W_CachePatchName(description[next].picname, PU_CACHE);
|
||||
if (SHORT(patch->width) >= 256)
|
||||
V_DrawCroppedPatch(8<<FRACBITS, (my + 168 - o)<<FRACBITS, FRACUNIT/2, 0, patch, 0, 0, SHORT(patch->width), o*2);
|
||||
V_DrawCroppedPatch(8<<FRACBITS, (my + 168 - o)<<FRACBITS, FRACUNIT/2, 0, patch, 0, 0, SHORT(patch->width)/2, o);
|
||||
else
|
||||
V_DrawCroppedPatch(8<<FRACBITS, (my + 168 - o)<<FRACBITS, FRACUNIT, 0, patch, 0, 0, SHORT(patch->width), o);
|
||||
W_UnlockCachedPatch(patch);
|
||||
|
@ -6975,9 +6983,9 @@ static void M_DrawSetupChoosePlayerMenu(void)
|
|||
else
|
||||
{
|
||||
if (SHORT(patch->width) >= 256)
|
||||
V_DrawCroppedPatch(8<<FRACBITS, (my + 8)<<FRACBITS, FRACUNIT/2, 0, patch, 0, (o-32)*2, SHORT(patch->width), SHORT(patch->height));
|
||||
V_DrawCroppedPatch(8<<FRACBITS, (my + 8)<<FRACBITS, FRACUNIT/2, 0, patch, 0, (o-32)*2, SHORT(patch->width)/2, SHORT(patch->height)/2 - (o-32));
|
||||
else
|
||||
V_DrawCroppedPatch(8<<FRACBITS, (my + 8)<<FRACBITS, FRACUNIT, 0, patch, 0, (o-32), SHORT(patch->width), SHORT(patch->height));
|
||||
V_DrawCroppedPatch(8<<FRACBITS, (my + 8)<<FRACBITS, FRACUNIT, 0, patch, 0, (o-32), SHORT(patch->width), SHORT(patch->height) - (o-32));
|
||||
}
|
||||
W_UnlockCachedPatch(patch);
|
||||
|
||||
|
|
|
@ -205,7 +205,7 @@ static void Y_IntermissionTokenDrawer(void)
|
|||
calc = (lowy - y)*2;
|
||||
|
||||
if (calc > 0)
|
||||
V_DrawCroppedPatch(32<<FRACBITS, y<<FRACBITS, FRACUNIT/2, 0, tokenicon, 32<<FRACBITS, y<<FRACBITS, SHORT(tokenicon->width), calc);
|
||||
V_DrawCroppedPatch(32<<FRACBITS, y<<FRACBITS, FRACUNIT/2, 0, tokenicon, 0, 0, SHORT(tokenicon->width), calc);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue