- 50 more simple replacements of 'level'

This commit is contained in:
Christoph Oelckers 2019-01-27 17:35:50 +01:00
parent 8c542e9be8
commit 06ba8c4c00
9 changed files with 50 additions and 46 deletions

View file

@ -509,27 +509,27 @@ inline FSectorPortal *line_t::GetTransferredPortal()
inline FSectorPortal *sector_t::GetPortal(int plane)
{
return &level.sectorPortals[Portals[plane]];
return &Level->sectorPortals[Portals[plane]];
}
inline double sector_t::GetPortalPlaneZ(int plane)
{
return level.sectorPortals[Portals[plane]].mPlaneZ;
return Level->sectorPortals[Portals[plane]].mPlaneZ;
}
inline DVector2 sector_t::GetPortalDisplacement(int plane)
{
return level.sectorPortals[Portals[plane]].mDisplacement;
return Level->sectorPortals[Portals[plane]].mDisplacement;
}
inline int sector_t::GetPortalType(int plane)
{
return level.sectorPortals[Portals[plane]].mType;
return Level->sectorPortals[Portals[plane]].mType;
}
inline int sector_t::GetOppositePortalGroup(int plane)
{
return level.sectorPortals[Portals[plane]].mDestination->PortalGroup;
return Level->sectorPortals[Portals[plane]].mDestination->PortalGroup;
}
inline bool sector_t::PortalBlocksView(int plane)

View file

@ -119,15 +119,16 @@ void P_Attach3dMidtexLinesToSector(sector_t *sector, int lineid, int tag, bool c
// invalid set of parameters
return;
}
auto Level = sector->Level;
extsector_t::midtex::plane &scrollplane = ceiling? sector->e->Midtex.Ceiling : sector->e->Midtex.Floor;
// Bit arrays that mark whether a line or sector is to be attached.
uint8_t *found_lines = new uint8_t[(level.lines.Size()+7)/8];
uint8_t *found_sectors = new uint8_t[(level.sectors.Size()+7)/8];
uint8_t *found_lines = new uint8_t[(Level->lines.Size()+7)/8];
uint8_t *found_sectors = new uint8_t[(Level->sectors.Size()+7)/8];
memset(found_lines, 0, sizeof (uint8_t) * ((level.lines.Size()+7)/8));
memset(found_sectors, 0, sizeof (uint8_t) * ((level.sectors.Size()+7)/8));
memset(found_lines, 0, sizeof (uint8_t) * ((Level->lines.Size()+7)/8));
memset(found_sectors, 0, sizeof (uint8_t) * ((Level->sectors.Size()+7)/8));
// mark all lines and sectors that are already attached to this one
// and clear the arrays. The old data will be re-added automatically
@ -149,11 +150,11 @@ void P_Attach3dMidtexLinesToSector(sector_t *sector, int lineid, int tag, bool c
if (tag == 0)
{
auto itr = level.GetLineIdIterator(lineid);
auto itr = Level->GetLineIdIterator(lineid);
int line;
while ((line = itr.Next()) >= 0)
{
line_t *ln = &level.lines[line];
line_t *ln = &Level->lines[line];
if (ln->frontsector == NULL || ln->backsector == NULL || !(ln->flags & ML_3DMIDTEX))
{
@ -165,13 +166,13 @@ void P_Attach3dMidtexLinesToSector(sector_t *sector, int lineid, int tag, bool c
}
else
{
auto it = level.GetSectorTagIterator(tag);
auto it = Level->GetSectorTagIterator(tag);
int sec;
while ((sec = it.Next()) >= 0)
{
for (auto ln : level.sectors[sec].Lines)
for (auto ln : Level->sectors[sec].Lines)
{
if (lineid != 0 && !level.LineHasId(ln, lineid)) continue;
if (lineid != 0 && !Level->LineHasId(ln, lineid)) continue;
if (ln->frontsector == NULL || ln->backsector == NULL || !(ln->flags & ML_3DMIDTEX))
{
@ -185,28 +186,28 @@ void P_Attach3dMidtexLinesToSector(sector_t *sector, int lineid, int tag, bool c
}
for(unsigned i=0; i < level.lines.Size(); i++)
for(unsigned i=0; i < Level->lines.Size(); i++)
{
if (found_lines[i>>3] & (1 << (i&7)))
{
auto &line = level.lines[i];
auto &line = Level->lines[i];
scrollplane.AttachedLines.Push(&line);
v = line.frontsector->Index();
assert(v < (int)level.sectors.Size());
assert(v < (int)Level->sectors.Size());
found_sectors[v>>3] |= 1 << (v&7);
v = line.backsector->Index();
assert(v < (int)level.sectors.Size());
assert(v < (int)Level->sectors.Size());
found_sectors[v>>3] |= 1 << (v&7);
}
}
for (unsigned i=0; i < level.sectors.Size(); i++)
for (unsigned i=0; i < Level->sectors.Size(); i++)
{
if (found_sectors[i>>3] & (1 << (i&7)))
{
scrollplane.AttachedSectors.Push(&level.sectors[i]);
scrollplane.AttachedSectors.Push(&Level->sectors[i]);
}
}

View file

@ -132,7 +132,7 @@ void DDoor::Tick ()
// killough 10/98: implement gradual lighting effects
if (m_LightTag != 0 && m_TopDist != -m_Sector->floorplane.fD())
{
level.EV_LightTurnOnPartway (m_LightTag,
Level->EV_LightTurnOnPartway (m_LightTag,
(m_Sector->ceilingplane.fD() + m_Sector->floorplane.fD()) / (m_TopDist + m_Sector->floorplane.fD()));
}
@ -178,7 +178,7 @@ void DDoor::Tick ()
// killough 10/98: implement gradual lighting effects
if (m_LightTag != 0 && m_TopDist != -m_Sector->floorplane.fD())
{
level.EV_LightTurnOnPartway (m_LightTag,
Level->EV_LightTurnOnPartway (m_LightTag,
(m_Sector->ceilingplane.fD() + m_Sector->floorplane.fD()) / (m_TopDist + m_Sector->floorplane.fD()));
}

View file

@ -352,7 +352,7 @@ void AActor::Die (AActor *source, AActor *inflictor, int dmgflags, FName MeansOf
// [JM] Fire KILL type scripts for actor. Not needed for players, since they have the "DEATH" script type.
if (!player && !(flags7 & MF7_NOKILLSCRIPTS) && ((flags7 & MF7_USEKILLSCRIPTS) || gameinfo.forcekillscripts))
{
level.Behaviors.StartTypedScripts(SCRIPT_Kill, this, true, 0, true);
Level->Behaviors.StartTypedScripts(SCRIPT_Kill, this, true, 0, true);
}
flags &= ~(MF_SHOOTABLE|MF_FLOAT|MF_SKULLFLY);
@ -387,7 +387,7 @@ void AActor::Die (AActor *source, AActor *inflictor, int dmgflags, FName MeansOf
}
if (CountsAsKill())
level.killed_monsters++;
Level->killed_monsters++;
if (source && source->player)
{
@ -399,7 +399,7 @@ void AActor::Die (AActor *source, AActor *inflictor, int dmgflags, FName MeansOf
// Don't count any frags at level start, because they're just telefrags
// resulting from insufficient deathmatch starts, and it wouldn't be
// fair to count them toward a player's score.
if (player && level.maptime)
if (player && Level->maptime)
{
source->player->frags[player - players]++;
if (player == source->player) // [RH] Cumulative frag count
@ -492,7 +492,7 @@ void AActor::Die (AActor *source, AActor *inflictor, int dmgflags, FName MeansOf
source->player->multicount++;
if (source->player->lastkilltime > 0)
{
if (source->player->lastkilltime < level.time - 3*TICRATE)
if (source->player->lastkilltime < Level->time - 3*TICRATE)
{
source->player->multicount = 1;
}
@ -535,7 +535,7 @@ void AActor::Die (AActor *source, AActor *inflictor, int dmgflags, FName MeansOf
}
}
}
source->player->lastkilltime = level.time;
source->player->lastkilltime = Level->time;
}
// [RH] Implement fraglimit
@ -563,10 +563,10 @@ void AActor::Die (AActor *source, AActor *inflictor, int dmgflags, FName MeansOf
E_PlayerDied(int(player - players));
// Death script execution, care of Skull Tag
level.Behaviors.StartTypedScripts (SCRIPT_Death, this, true);
Level->Behaviors.StartTypedScripts (SCRIPT_Death, this, true);
// [RH] Force a delay between death and respawn
player->respawn_time = level.time + TICRATE;
player->respawn_time = Level->time + TICRATE;
//Added by MC: Respawn bots
if (bglobal.botnum && !demoplayback)
@ -617,8 +617,7 @@ void AActor::Die (AActor *source, AActor *inflictor, int dmgflags, FName MeansOf
}
// [RH] If this is the unmorphed version of another monster, destroy this
// actor, because the morphed version is the one that will stick around in
// the level.
// actor, because the morphed version is the one that will stick around.
if (flags & MF_UNMORPHED)
{
Destroy ();
@ -1247,7 +1246,7 @@ static int DamageMobj (AActor *target, AActor *inflictor, AActor *source, int da
//Use the original damage to check for telefrag amount. Don't let the now-amplified damagetypes do it.
if (!telefragDamage || (target->flags7 & MF7_LAXTELEFRAGDMG))
{ // Still allow telefragging :-(
damage = (int)(damage * level.teamdamage);
damage = (int)(damage * target->Level->teamdamage);
if (damage <= 0)
{
return (damage < 0) ? -1 : 0;
@ -1681,7 +1680,7 @@ bool P_PoisonPlayer (player_t *player, AActor *poisoner, AActor *source, int poi
}
if (source != NULL && source->player != player && player->mo->IsTeammate (source))
{
poison = (int)(poison * level.teamdamage);
poison = (int)(poison * player->mo->Level->teamdamage);
}
if (poison > 0)
{
@ -1802,7 +1801,7 @@ void P_PoisonDamage (player_t *player, AActor *source, int damage, bool playPain
return;
}
}
if (!(level.time&63) && playPainSound)
if (!(target->Level->time&63) && playPainSound)
{
FState *painstate = target->FindState(NAME_Pain, player->poisonpaintype);
if (painstate != NULL)

View file

@ -288,7 +288,8 @@ static void RemoveTaggedSectors(extsector_t::linked::plane &scrollplane, int tag
{
for(int i = scrollplane.Sectors.Size()-1; i>=0; i--)
{
if (level.SectorHasTag(scrollplane.Sectors[i].Sector, tag))
auto sec = scrollplane.Sectors[i].Sector;
if (sec->Level->SectorHasTag(sec, tag))
{
scrollplane.Sectors.Delete(i);
}
@ -313,6 +314,7 @@ bool P_AddSectorLinks(sector_t *control, int tag, INTBOOL ceiling, int movetype)
if ((ceiling && control->PlaneMoving(sector_t::ceiling)) ||
(!ceiling && control->PlaneMoving(sector_t::floor))) return false;
auto Level = control->Level;
// Make sure we have only valid combinations
movetype &= LINK_FLAGMASK;
if ((movetype & LINK_FLOORMIRROR) == LINK_FLOORMIRRORFLAG) movetype &= ~LINK_FLOORMIRRORFLAG;
@ -327,16 +329,16 @@ bool P_AddSectorLinks(sector_t *control, int tag, INTBOOL ceiling, int movetype)
if (movetype > 0)
{
int sec;
auto itr = level.GetSectorTagIterator(tag);
auto itr = Level->GetSectorTagIterator(tag);
while ((sec = itr.Next()) >= 0)
{
// Don't attach to self (but allow attaching to this sector's oposite plane.
if (control == &level.sectors[sec])
if (control == &Level->sectors[sec])
{
if (ceiling == sector_t::floor && movetype & LINK_FLOOR) continue;
if (ceiling == sector_t::ceiling && movetype & LINK_CEILING) continue;
}
AddSingleSector(scrollplane, &level.sectors[sec], movetype);
AddSingleSector(scrollplane, &Level->sectors[sec], movetype);
}
}
else
@ -360,11 +362,11 @@ void P_AddSectorLinksByID(sector_t *control, int id, INTBOOL ceiling)
{
extsector_t::linked::plane &scrollplane = ceiling? control->e->Linked.Ceiling : control->e->Linked.Floor;
auto itr = level.GetLineIdIterator(id);
auto itr = control->Level->GetLineIdIterator(id);
int line;
while ((line = itr.Next()) >= 0)
{
line_t *ld = &level.lines[line];
line_t *ld = &control->Level->lines[line];
if (ld->special == Static_Init && ld->args[1] == Init_SectorLink)
{

View file

@ -857,7 +857,7 @@ int P_CheckSight (AActor *t1, AActor *t2, int flags)
//
// check for trivial rejection
//
if (!level.CheckReject(s1, s2))
if (!t1->Level->CheckReject(s1, s2))
{
sightcounts[0]++;
res = false; // can't possibly be connected

View file

@ -164,6 +164,8 @@ bool P_ActivateLine (line_t *line, AActor *mo, int side, int activationType, DVe
return false;
}
auto Level = line->GetLevel();
// [MK] Use WorldLinePreActivated to decide if activation should continue
bool shouldactivate = true;
E_WorldLinePreActivated(line, mo, activationType, &shouldactivate);
@ -198,13 +200,13 @@ bool P_ActivateLine (line_t *line, AActor *mo, int side, int activationType, DVe
}
// some old WADs use this method to create walls that change the texture when shot.
else if (activationType == SPAC_Impact && // only for shootable triggers
(level.flags2 & LEVEL2_DUMMYSWITCHES) && // this is only a compatibility setting for an old hack!
(Level->flags2 & LEVEL2_DUMMYSWITCHES) && // this is only a compatibility setting for an old hack!
!repeat && // only non-repeatable triggers
(special<Generic_Floor || special>Generic_Crusher) && // not for Boom's generalized linedefs
special && // not for lines without a special
level.LineHasId(line, line->args[0]) && // Safety check: exclude edited UDMF linedefs or ones that don't map the tag to args[0]
Level->LineHasId(line, line->args[0]) && // Safety check: exclude edited UDMF linedefs or ones that don't map the tag to args[0]
line->args[0] && // only if there's a tag (which is stored in the first arg)
level.FindFirstSectorFromTag (line->args[0]) == -1) // only if no sector is tagged to this linedef
Level->FindFirstSectorFromTag (line->args[0]) == -1) // only if no sector is tagged to this linedef
{
P_ChangeSwitchTexture (line->sidedef[0], repeat, special);
line->special = 0;

View file

@ -97,7 +97,7 @@ static bool P_StartButton (side_t *side, int Where, FSwitchDef *Switch, const DV
}
}
level.CreateThinker<DActiveButton> (side, Where, Switch, pos, useagain);
side->sector->Level->CreateThinker<DActiveButton> (side, Where, Switch, pos, useagain);
return true;
}

View file

@ -118,7 +118,7 @@ namespace swrenderer
}
else
{
return FindSubsectorDepth(thread, worldPos, level.HeadNode());
return FindSubsectorDepth(thread, worldPos, Level->HeadNode());
}
}