- replaced all code that changed a sector's light level with a setter function.

SVN r1762 (trunk)
This commit is contained in:
Christoph Oelckers 2009-08-08 20:03:43 +00:00
parent a47ec74eba
commit cd95473d57
4 changed files with 42 additions and 27 deletions

View file

@ -92,7 +92,7 @@ void DLightningThinker::LightningFlash ()
if (LightningLightLevels[numsectors+(j>>3)] & (1<<(j&7)) && if (LightningLightLevels[numsectors+(j>>3)] & (1<<(j&7)) &&
LightningLightLevels[j] < tempSec->lightlevel-4) LightningLightLevels[j] < tempSec->lightlevel-4)
{ {
tempSec->lightlevel -= 4; tempSec->ChangeLightLevel(-4);
} }
} }
} }
@ -103,7 +103,7 @@ void DLightningThinker::LightningFlash ()
{ {
if (LightningLightLevels[numsectors+(j>>3)] & (1<<(j&7))) if (LightningLightLevels[numsectors+(j>>3)] & (1<<(j&7)))
{ {
tempSec->lightlevel = LightningLightLevels[j]; tempSec->SetLightLevel(LightningLightLevels[j]);
} }
} }
memset (&LightningLightLevels[numsectors], 0, (numsectors+7)/8); memset (&LightningLightLevels[numsectors], 0, (numsectors+7)/8);
@ -128,19 +128,19 @@ void DLightningThinker::LightningFlash ()
LightningLightLevels[numsectors+(j>>3)] |= 1<<(j&7); LightningLightLevels[numsectors+(j>>3)] |= 1<<(j&7);
if (special == Light_IndoorLightning1) if (special == Light_IndoorLightning1)
{ {
tempSec->lightlevel = MIN<int> (tempSec->lightlevel+64, flashLight); tempSec->SetLightLevel(MIN<int> (tempSec->lightlevel+64, flashLight));
} }
else if (special == Light_IndoorLightning2) else if (special == Light_IndoorLightning2)
{ {
tempSec->lightlevel = MIN<int> (tempSec->lightlevel+32, flashLight); tempSec->SetLightLevel(MIN<int> (tempSec->lightlevel+32, flashLight));
} }
else else
{ {
tempSec->lightlevel = flashLight; tempSec->SetLightLevel(flashLight);
} }
if (tempSec->lightlevel < LightningLightLevels[j]) if (tempSec->lightlevel < LightningLightLevels[j])
{ {
tempSec->lightlevel = LightningLightLevels[j]; tempSec->SetLightLevel(LightningLightLevels[j]);
} }
} }
} }

View file

@ -90,7 +90,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_LightGoesOut)
vertex_t *spot; vertex_t *spot;
fixed_t newheight; fixed_t newheight;
sec->lightlevel = 0; sec->SetLightLevel(0);
newheight = sec->FindLowestFloorSurrounding (&spot); newheight = sec->FindLowestFloorSurrounding (&spot);
sec->floorplane.d = sec->floorplane.PointToDist (spot, newheight); sec->floorplane.d = sec->floorplane.PointToDist (spot, newheight);

View file

@ -81,9 +81,9 @@ void DFireFlicker::Tick ()
// [RH] Shouldn't this be (m_MaxLight - amount < m_MinLight)? // [RH] Shouldn't this be (m_MaxLight - amount < m_MinLight)?
if (m_Sector->lightlevel - amount < m_MinLight) if (m_Sector->lightlevel - amount < m_MinLight)
m_Sector->lightlevel = m_MinLight; m_Sector->SetLightLevel(m_MinLight);
else else
m_Sector->lightlevel = m_MaxLight - amount; m_Sector->SetLightLevel(m_MaxLight - amount);
m_Count = 4; m_Count = 4;
} }
@ -132,12 +132,12 @@ void DFlicker::Tick ()
} }
else if (m_Sector->lightlevel == m_MaxLight) else if (m_Sector->lightlevel == m_MaxLight)
{ {
m_Sector->lightlevel = m_MinLight; m_Sector->SetLightLevel(m_MinLight);
m_Count = (pr_flicker()&7)+1; m_Count = (pr_flicker()&7)+1;
} }
else else
{ {
m_Sector->lightlevel = m_MaxLight; m_Sector->SetLightLevel(m_MaxLight);
m_Count = (pr_flicker()&31)+1; m_Count = (pr_flicker()&31)+1;
} }
} }
@ -189,12 +189,12 @@ void DLightFlash::Tick ()
{ {
if (m_Sector->lightlevel == m_MaxLight) if (m_Sector->lightlevel == m_MaxLight)
{ {
m_Sector->lightlevel = m_MinLight; m_Sector->SetLightLevel(m_MinLight);
m_Count = (pr_lightflash() & m_MinTime) + 1; m_Count = (pr_lightflash() & m_MinTime) + 1;
} }
else else
{ {
m_Sector->lightlevel = m_MaxLight; m_Sector->SetLightLevel(m_MaxLight);
m_Count = (pr_lightflash() & m_MaxTime) + 1; m_Count = (pr_lightflash() & m_MaxTime) + 1;
} }
} }
@ -251,12 +251,12 @@ void DStrobe::Tick ()
{ {
if (m_Sector->lightlevel == m_MinLight) if (m_Sector->lightlevel == m_MinLight)
{ {
m_Sector->lightlevel = m_MaxLight; m_Sector->SetLightLevel(m_MaxLight);
m_Count = m_BrightTime; m_Count = m_BrightTime;
} }
else else
{ {
m_Sector->lightlevel = m_MinLight; m_Sector->SetLightLevel(m_MinLight);
m_Count = m_DarkTime; m_Count = m_DarkTime;
} }
} }
@ -353,7 +353,7 @@ void EV_TurnTagLightsOff (int tag)
if (tsec->lightlevel < min) if (tsec->lightlevel < min)
min = tsec->lightlevel; min = tsec->lightlevel;
} }
sector->lightlevel = min; sector->SetLightLevel(min);
} }
} }
@ -390,7 +390,7 @@ void EV_LightTurnOn (int tag, int bright)
bright = temp->lightlevel; bright = temp->lightlevel;
} }
} }
sector->lightlevel = clamp (bright, 0, 255); sector->SetLightLevel(bright);
} }
} }
@ -433,7 +433,7 @@ void EV_LightTurnOnPartway (int tag, fixed_t frac)
} }
} }
} }
sector->lightlevel = (BYTE)DMulScale16 (frac, bright, FRACUNIT-frac, min); sector->SetLightLevel(DMulScale16 (frac, bright, FRACUNIT-frac, min));
} }
} }
@ -450,7 +450,7 @@ void EV_LightChange (int tag, int value)
while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0) while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0)
{ {
int newlight = sectors[secnum].lightlevel + value; int newlight = sectors[secnum].lightlevel + value;
sectors[secnum].lightlevel = clamp (newlight, 0, 255); sectors[secnum].SetLightLevel(newlight);
} }
} }
@ -496,7 +496,7 @@ void DGlow::Tick ()
} }
break; break;
} }
m_Sector->lightlevel = newlight; m_Sector->SetLightLevel(newlight);
} }
@ -530,7 +530,7 @@ void DGlow2::Tick ()
{ {
if (m_OneShot) if (m_OneShot)
{ {
m_Sector->lightlevel = m_End; m_Sector->SetLightLevel(m_End);
Destroy (); Destroy ();
return; return;
} }
@ -543,7 +543,7 @@ void DGlow2::Tick ()
} }
} }
m_Sector->lightlevel = ((m_End - m_Start) * m_Tics) / m_MaxTics + m_Start; m_Sector->SetLightLevel(((m_End - m_Start) * m_Tics) / m_MaxTics + m_Start);
} }
DGlow2::DGlow2 (sector_t *sector, int start, int end, int tics, bool oneshot) DGlow2::DGlow2 (sector_t *sector, int start, int end, int tics, bool oneshot)
@ -597,7 +597,7 @@ void EV_StartLightFading (int tag, int value, int tics)
if (tics <= 0) if (tics <= 0)
{ {
sec->lightlevel = value; sec->SetLightLevel(value);
} }
else else
{ {
@ -631,12 +631,12 @@ void DPhased::Tick ()
const int steps = 12; const int steps = 12;
if (m_Phase < steps) if (m_Phase < steps)
m_Sector->lightlevel = ((255 - m_BaseLevel) * m_Phase) / steps + m_BaseLevel; m_Sector->SetLightLevel( ((255 - m_BaseLevel) * m_Phase) / steps + m_BaseLevel);
else if (m_Phase < 2*steps) else if (m_Phase < 2*steps)
m_Sector->lightlevel = ((255 - m_BaseLevel) * (2*steps - m_Phase - 1) / steps m_Sector->SetLightLevel( ((255 - m_BaseLevel) * (2*steps - m_Phase - 1) / steps
+ m_BaseLevel); + m_BaseLevel));
else else
m_Sector->lightlevel = m_BaseLevel; m_Sector->SetLightLevel(m_BaseLevel);
if (m_Phase == 0) if (m_Phase == 0)
m_Phase = 63; m_Phase = 63;

View file

@ -590,6 +590,21 @@ struct sector_t
return (MoreFlags & SECF_IGNOREHEIGHTSEC)? NULL : heightsec; return (MoreFlags & SECF_IGNOREHEIGHTSEC)? NULL : heightsec;
} }
void ChangeLightLevel(int newval)
{
lightlevel = (BYTE)clamp(lightlevel + newval, 0, 255);
}
void SetLightLevel(int newval)
{
lightlevel = (BYTE)clamp(newval, 0, 255);
}
int GetLightLevel() const
{
return lightlevel;
}
// Member variables // Member variables
fixed_t CenterFloor () const { return floorplane.ZatPoint (soundorg[0], soundorg[1]); } fixed_t CenterFloor () const { return floorplane.ZatPoint (soundorg[0], soundorg[1]); }