- while we're at it, let's also wrap line ID searches in an iterator class so that we can do multiple IDs per line later as well.
This commit is contained in:
parent
425e5b9ffc
commit
47543bb766
10 changed files with 103 additions and 57 deletions
|
|
@ -227,18 +227,16 @@ int FSectorTagIterator::NextCompat(bool compat, int start)
|
|||
|
||||
// killough 4/16/98: Same thing, only for linedefs
|
||||
|
||||
int P_FindLineFromID (int id, int start)
|
||||
int FLineIdIterator::Next()
|
||||
{
|
||||
start = start >= 0 ? lines[start].nextid :
|
||||
lines[(unsigned) id % (unsigned) numlines].firstid;
|
||||
while (start >= 0 && lines[start].id != id)
|
||||
start = lines[start].nextid;
|
||||
return start;
|
||||
while (start != -1 && lines[start].id != searchtag) start = lines[start].nextid;
|
||||
if (start == -1) return -1;
|
||||
int ret = start;
|
||||
start = lines[start].nextid;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//============================================================================
|
||||
//
|
||||
// P_ActivateLine
|
||||
|
|
@ -1010,7 +1008,8 @@ DWallLightTransfer::DWallLightTransfer (sector_t *srcSec, int target, BYTE flags
|
|||
wallflags = WALLF_ABSLIGHTING | WALLF_NOFAKECONTRAST;
|
||||
}
|
||||
|
||||
for (linenum = -1; (linenum = P_FindLineFromID (target, linenum)) >= 0; )
|
||||
FLineIdIterator itr(target);
|
||||
while ((linenum = itr.Next()) >= 0)
|
||||
{
|
||||
if (flags & WLF_SIDE1 && lines[linenum].sidedef[0] != NULL)
|
||||
{
|
||||
|
|
@ -1040,7 +1039,8 @@ void DWallLightTransfer::DoTransfer (short lightlevel, int target, BYTE flags)
|
|||
{
|
||||
int linenum;
|
||||
|
||||
for (linenum = -1; (linenum = P_FindLineFromID (target, linenum)) >= 0; )
|
||||
FLineIdIterator itr(target);
|
||||
while ((linenum = itr.Next()) >= 0)
|
||||
{
|
||||
line_t *line = &lines[linenum];
|
||||
|
||||
|
|
@ -1927,10 +1927,15 @@ static void P_SpawnScrollers(void)
|
|||
// killough 3/1/98: scroll wall according to linedef
|
||||
// (same direction and speed as scrolling floors)
|
||||
case Scroll_Texture_Model:
|
||||
for (s=-1; (s = P_FindLineFromID (l->args[0],s)) >= 0;)
|
||||
{
|
||||
FLineIdIterator itr(l->args[0]);
|
||||
while ((s = itr.Next()) >= 0)
|
||||
{
|
||||
if (s != i)
|
||||
new DScroller (dx, dy, lines+s, control, accel);
|
||||
new DScroller(dx, dy, lines + s, control, accel);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case Scroll_Texture_Offsets:
|
||||
// killough 3/2/98: scroll according to sidedef offsets
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue