Don't crash G_ShowCacheLocks when there are many locks; Better sprite interpolation in subways

git-svn-id: https://svn.eduke32.com/eduke32@1916 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
helixhorned 2011-06-24 11:16:12 +00:00
parent f339feb0ad
commit cf0e5b53c7
2 changed files with 38 additions and 4 deletions

View file

@ -5582,6 +5582,27 @@ ACTOR_STATIC void G_MoveEffectors(void) //STATNUM 3
} }
} }
else if (l==0 && (sc->floorstat&64))
{
// fix for jittering of sprites in halted rotating sectors
for (p=headspritesect[s->sectnum]; p>=0; p=nextspritesect[p])
{
// keep this conditional in sync with above!
if ((sprite[p].statnum != STAT_EFFECTOR || (sprite[p].lotag==49||sprite[p].lotag==50))
&& sprite[p].statnum != STAT_PROJECTILE)
if (sprite[p].picnum != LASERLINE)
{
if (sprite[p].picnum == APLAYER && sprite[p].owner >= 0)
{
p = nextspritesect[p];
continue;
}
actor[p].bposx = sprite[p].x;
actor[p].bposy = sprite[p].y;
}
}
}
A_MoveSector(i); A_MoveSector(i);
} }
@ -5771,9 +5792,6 @@ ACTOR_STATIC void G_MoveEffectors(void) //STATNUM 3
(sprite[j].picnum == SECTOREFFECTOR && (sprite[j].lotag == 49||sprite[j].lotag == 50))) (sprite[j].picnum == SECTOREFFECTOR && (sprite[j].lotag == 49||sprite[j].lotag == 50)))
&& sprite[j].picnum != LOCATORS) && sprite[j].picnum != LOCATORS)
{ {
if (move_fixed_sprite(j, s-sprite, t[2]))
rotatepoint(s->x,s->y,sprite[j].x,sprite[j].y,q,&sprite[j].x,&sprite[j].y);
// fix interpolation // fix interpolation
if (numplayers < 2 && !g_netServer) if (numplayers < 2 && !g_netServer)
{ {
@ -5781,6 +5799,9 @@ ACTOR_STATIC void G_MoveEffectors(void) //STATNUM 3
actor[j].bposy = sprite[j].y; actor[j].bposy = sprite[j].y;
} }
if (move_fixed_sprite(j, s-sprite, t[2]))
rotatepoint(s->x,s->y,sprite[j].x,sprite[j].y,q,&sprite[j].x,&sprite[j].y);
sprite[j].x+= m; sprite[j].x+= m;
sprite[j].y+= x; sprite[j].y+= x;

View file

@ -608,24 +608,37 @@ static void G_ShowCacheLocks(void)
{ {
int16_t i,k; int16_t i,k;
if (offscreenrendering)
return;
k = 0; k = 0;
for (i=cacnum-1; i>=0; i--) for (i=cacnum-1; i>=0; i--)
if ((*cac[i].lock) >= 200) if ((*cac[i].lock) >= 200)
{ {
if (k >= ydim-12)
break;
Bsprintf(tempbuf,"Locked- %d: Leng:%d, Lock:%d",i,cac[i].leng,*cac[i].lock); Bsprintf(tempbuf,"Locked- %d: Leng:%d, Lock:%d",i,cac[i].leng,*cac[i].lock);
printext256(0L,k,31,-1,tempbuf,1); printext256(0L,k,31,-1,tempbuf,1);
k += 6; k += 6;
} }
if (k < ydim-12)
k += 6; k += 6;
for (i=10; i>=0; i--) for (i=10; i>=0; i--)
if (rts_lumplockbyte[i] >= 200) if (rts_lumplockbyte[i] >= 200)
{ {
if (k >= ydim-12)
break;
Bsprintf(tempbuf,"RTS Locked %d:",i); Bsprintf(tempbuf,"RTS Locked %d:",i);
printext256(0L,k,31,-1,tempbuf,1); printext256(0L,k,31,-1,tempbuf,1);
k += 6; k += 6;
} }
if (k >= ydim-12 && k<ydim-6)
printext256(0L,k,31,-1,"(MORE . . .)",1);
} }
int32_t A_CheckInventorySprite(spritetype *s) int32_t A_CheckInventorySprite(spritetype *s)