int DPhased::PhaseHelper (sector_t *sector, int index, int light, sector_t *prev) { if (!sector) { return index; } else { DPhased *l; int baselevel = sector->lightlevel ? sector->lightlevel : light; if (index == 0) { l = this; m_BaseLevel = baselevel; } else l = new DPhased (sector, baselevel); int numsteps = PhaseHelper (sector->NextSpecialSector ( (sector->special & 0x00ff) == LightSequenceSpecial1 ? LightSequenceSpecial2 : LightSequenceSpecial1, prev), index + 1, l->m_BaseLevel, sector); l->m_Phase = ((numsteps - index - 1) * 64) / numsteps; sector->special &= 0xff00; // [BC] If we're the server, tell clients to create the phased light. if ( NETWORK_GetState( ) == NETSTATE_SERVER ) SERVERCOMMANDS_DoSectorLightPhased( ULONG( sector - sectors ), m_BaseLevel, m_Phase ); return numsteps; } }
int DPhased::PhaseHelper (sector_t *sector, int index, int light, sector_t *prev) { if (!sector) { return index; } else { DPhased *l; int baselevel = sector->lightlevel ? sector->lightlevel : light; if (index == 0) { l = this; m_BaseLevel = baselevel; } else l = new DPhased (sector, baselevel); int numsteps = PhaseHelper (P_NextSpecialSector (sector, (sector->special & 0x00ff) == LightSequenceSpecial1 ? LightSequenceSpecial2 : LightSequenceSpecial1, prev), index + 1, l->m_BaseLevel, sector); l->m_Phase = ((numsteps - index - 1) * 64) / numsteps; sector->special &= 0xff00; return numsteps; } }
DPhased::DPhased (sector_t *sector) : DLighting (sector) { PhaseHelper (sector, 0, 0, NULL); }