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