mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-20 18:52:43 +00:00
- store wall pointers in animwall
This commit is contained in:
parent
6b73a37b56
commit
567a360092
7 changed files with 23 additions and 24 deletions
|
@ -400,14 +400,14 @@ void prelevel_d(int g)
|
|||
I_Error("Too many 'anim' walls (max 512.)");
|
||||
|
||||
animwall[numanimwalls].tag = 0;
|
||||
animwall[numanimwalls].wallnum = 0;
|
||||
animwall[numanimwalls].wall = nullptr;
|
||||
|
||||
switch (wal.overpicnum)
|
||||
{
|
||||
case FANSHADOW:
|
||||
case FANSPRITE:
|
||||
wal.cstat |= 65;
|
||||
animwall[numanimwalls].wallnum = wallnum(&wal);
|
||||
animwall[numanimwalls].wall = &wal;
|
||||
numanimwalls++;
|
||||
break;
|
||||
|
||||
|
@ -427,7 +427,7 @@ void prelevel_d(int g)
|
|||
|
||||
case BIGFORCE:
|
||||
|
||||
animwall[numanimwalls].wallnum = wallnum(&wal);
|
||||
animwall[numanimwalls].wall = &wal;
|
||||
numanimwalls++;
|
||||
|
||||
continue;
|
||||
|
@ -441,7 +441,7 @@ void prelevel_d(int g)
|
|||
case W_TECHWALL2:
|
||||
case W_TECHWALL3:
|
||||
case W_TECHWALL4:
|
||||
animwall[numanimwalls].wallnum = wallnum(&wal);
|
||||
animwall[numanimwalls].wall = &wal;
|
||||
// animwall[numanimwalls].tag = -1;
|
||||
numanimwalls++;
|
||||
break;
|
||||
|
@ -450,7 +450,7 @@ void prelevel_d(int g)
|
|||
case SCREENBREAK8:
|
||||
for (int j = SCREENBREAK6; j < SCREENBREAK9; j++)
|
||||
tloadtile(j);
|
||||
animwall[numanimwalls].wallnum = wallnum(&wal);
|
||||
animwall[numanimwalls].wall = &wal;
|
||||
animwall[numanimwalls].tag = -1;
|
||||
numanimwalls++;
|
||||
break;
|
||||
|
@ -462,7 +462,7 @@ void prelevel_d(int g)
|
|||
wal.extra = wal.picnum;
|
||||
animwall[numanimwalls].tag = -1;
|
||||
|
||||
animwall[numanimwalls].wallnum = wallnum(&wal);
|
||||
animwall[numanimwalls].wall = &wal;
|
||||
animwall[numanimwalls].tag = wal.picnum;
|
||||
numanimwalls++;
|
||||
break;
|
||||
|
@ -485,7 +485,7 @@ void prelevel_d(int g)
|
|||
case SCREENBREAK18:
|
||||
case SCREENBREAK19:
|
||||
|
||||
animwall[numanimwalls].wallnum = wallnum(&wal);
|
||||
animwall[numanimwalls].wall = &wal;
|
||||
animwall[numanimwalls].tag = wal.picnum;
|
||||
numanimwalls++;
|
||||
break;
|
||||
|
|
|
@ -418,8 +418,6 @@ void prelevel_r(int g)
|
|||
struct player_struct* p;
|
||||
int i;
|
||||
int j;
|
||||
int startwall;
|
||||
int endwall;
|
||||
int lotaglist;
|
||||
short lotags[65];
|
||||
int speed = 0;
|
||||
|
@ -717,18 +715,18 @@ void prelevel_r(int g)
|
|||
|
||||
mirrorcnt = 0;
|
||||
|
||||
for (i = 0; i < numwalls; i++)
|
||||
for (auto& wl : walls())
|
||||
{
|
||||
walltype* wal;
|
||||
wal = &wall[i];
|
||||
walltype* wal = &wl;
|
||||
|
||||
|
||||
if (wal->overpicnum == MIRROR && (wal->cstat & 32) != 0)
|
||||
{
|
||||
auto sect = wal->nextSector();
|
||||
|
||||
if (mirrorcnt > 63)
|
||||
I_Error("Too many mirrors (64 max.)");
|
||||
if ((j >= 0) && sect->ceilingpicnum != MIRROR)
|
||||
if (sect->ceilingpicnum != MIRROR)
|
||||
{
|
||||
sect->ceilingpicnum = MIRROR;
|
||||
sect->floorpicnum = MIRROR;
|
||||
|
@ -743,17 +741,17 @@ void prelevel_r(int g)
|
|||
I_Error("Too many 'anim' walls (max 512.)");
|
||||
|
||||
animwall[numanimwalls].tag = 0;
|
||||
animwall[numanimwalls].wallnum = 0;
|
||||
animwall[numanimwalls].wall = nullptr;
|
||||
|
||||
switch (wal->overpicnum)
|
||||
{
|
||||
case FANSPRITE:
|
||||
wal->cstat |= 65;
|
||||
animwall[numanimwalls].wallnum = i;
|
||||
animwall[numanimwalls].wall = wal;
|
||||
numanimwalls++;
|
||||
break;
|
||||
case BIGFORCE:
|
||||
animwall[numanimwalls].wallnum = i;
|
||||
animwall[numanimwalls].wall = wal;
|
||||
numanimwalls++;
|
||||
continue;
|
||||
}
|
||||
|
@ -767,7 +765,7 @@ void prelevel_r(int g)
|
|||
case SCREENBREAK8:
|
||||
for (j = SCREENBREAK6; j <= SCREENBREAK8; j++)
|
||||
tloadtile(j);
|
||||
animwall[numanimwalls].wallnum = i;
|
||||
animwall[numanimwalls].wall = wal;
|
||||
animwall[numanimwalls].tag = -1;
|
||||
numanimwalls++;
|
||||
break;
|
||||
|
|
|
@ -74,7 +74,7 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, animwalltype& w, a
|
|||
{
|
||||
if (arc.BeginObject(keyname))
|
||||
{
|
||||
arc("wallnum", w.wallnum)
|
||||
arc("wallnum", w.wall)
|
||||
("tag", w.tag)
|
||||
.EndObject();
|
||||
}
|
||||
|
|
|
@ -1191,9 +1191,9 @@ void operatemasterswitches(int low)
|
|||
|
||||
void operateforcefields_common(DDukeActor *effector, int low, const std::initializer_list<int> &tiles)
|
||||
{
|
||||
for (int p = numanimwalls; p >= 0; p--)
|
||||
for (int p = numanimwalls-1; p >= 0; p--)
|
||||
{
|
||||
auto wal = &wall[animwall[p].wallnum];
|
||||
auto wal = animwall[p].wall;
|
||||
|
||||
if (low == wal->lotag || low == -1)
|
||||
if (isIn(wal->overpicnum, tiles))
|
||||
|
|
|
@ -92,7 +92,7 @@ void animatewalls_d(void)
|
|||
|
||||
for (int p = 0; p < numanimwalls; p++)
|
||||
{
|
||||
auto wal = &wall[animwall[p].wallnum];
|
||||
auto wal = animwall[p].wall;
|
||||
int j = wal->picnum;
|
||||
|
||||
switch (j)
|
||||
|
|
|
@ -213,7 +213,7 @@ void animatewalls_r(void)
|
|||
|
||||
for (int p = 0; p < numanimwalls; p++)
|
||||
{
|
||||
auto wal = &wall[animwall[p].wallnum];
|
||||
auto wal = animwall[p].wall;
|
||||
int j = wal->picnum;
|
||||
|
||||
switch (j)
|
||||
|
@ -1349,7 +1349,7 @@ void checkhitwall_r(DDukeActor* spr, walltype* wal, int x, int y, int z, int atw
|
|||
if (sn < 0) return;
|
||||
darkestwall = 0;
|
||||
|
||||
wal = &wall[sector[sn].wallptr];
|
||||
wal = sector[sn].firstWall();
|
||||
for (i = sector[sn].wallnum; i > 0; i--, wal++)
|
||||
if (wal->shade > darkestwall)
|
||||
darkestwall = wal->shade;
|
||||
|
|
|
@ -107,7 +107,8 @@ inline DDukeActor* DDukeActor::array() { return hittype; }
|
|||
|
||||
struct animwalltype
|
||||
{
|
||||
int wallnum, tag;
|
||||
walltype* wall;
|
||||
int tag;
|
||||
};
|
||||
|
||||
// Todo - put more state in here
|
||||
|
|
Loading…
Reference in a new issue