mirror of
https://github.com/ZDoom/Raze.git
synced 2025-01-31 12:30:40 +00:00
- moved some non-owner info out of the owner field.
This only handles items where both reading and writing can be located.
This commit is contained in:
parent
15fc884909
commit
4c3435bacf
3 changed files with 17 additions and 11 deletions
|
@ -3308,7 +3308,7 @@ void handle_se03(DDukeActor *actor)
|
||||||
if (t[4] == 0) return;
|
if (t[4] == 0) return;
|
||||||
int x, p = findplayer(actor, &x);
|
int x, p = findplayer(actor, &x);
|
||||||
|
|
||||||
int palvals = s->owner; // this type hijacks the Owner field!!!
|
int palvals = actor->palvals;
|
||||||
|
|
||||||
// if(t[5] > 0) { t[5]--; break; }
|
// if(t[5] > 0) { t[5]--; break; }
|
||||||
|
|
||||||
|
@ -3360,7 +3360,7 @@ void handle_se04(DDukeActor *actor)
|
||||||
int sh = s->hitag;
|
int sh = s->hitag;
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
int palvals = s->owner; // this type hijacks the Owner field!!!
|
int palvals = actor->palvals;
|
||||||
|
|
||||||
if ((global_random / (sh + 1) & 31) < 4)
|
if ((global_random / (sh + 1) & 31) < 4)
|
||||||
{
|
{
|
||||||
|
@ -3814,7 +3814,7 @@ void handle_se13(DDukeActor* actor)
|
||||||
|
|
||||||
if (s->ang == 512)
|
if (s->ang == 512)
|
||||||
{
|
{
|
||||||
if (s->owner) // hijacked!
|
if (actor->spriteextra)
|
||||||
{
|
{
|
||||||
if (abs(t[0] - sc->ceilingz) >= j)
|
if (abs(t[0] - sc->ceilingz) >= j)
|
||||||
sc->ceilingz += sgn(t[0] - sc->ceilingz) * j;
|
sc->ceilingz += sgn(t[0] - sc->ceilingz) * j;
|
||||||
|
|
|
@ -168,7 +168,8 @@ int initspriteforspawn(DDukeActor* actj, int pn, const std::initializer_list<int
|
||||||
act->bposy = sp->y;
|
act->bposy = sp->y;
|
||||||
act->bposz = sp->z;
|
act->bposz = sp->z;
|
||||||
|
|
||||||
sp->owner = act->owner = i;
|
act->SetOwner(act);
|
||||||
|
act->SetHitOwner(act);
|
||||||
act->cgg = 0;
|
act->cgg = 0;
|
||||||
act->movflag = 0;
|
act->movflag = 0;
|
||||||
act->tempang = 0;
|
act->tempang = 0;
|
||||||
|
@ -722,7 +723,7 @@ void spawneffector(DDukeActor* actor)
|
||||||
t[1] = sector[sect].floorz;
|
t[1] = sector[sect].floorz;
|
||||||
|
|
||||||
bool ceiling = (abs(t[0] - sp->z) < abs(t[1] - sp->z));
|
bool ceiling = (abs(t[0] - sp->z) < abs(t[1] - sp->z));
|
||||||
sp->owner = ceiling; // hijack
|
actor->spriteextra = ceiling;
|
||||||
|
|
||||||
if (sp->ang == 512)
|
if (sp->ang == 512)
|
||||||
{
|
{
|
||||||
|
@ -845,7 +846,7 @@ void spawneffector(DDukeActor* actor)
|
||||||
sector[sect].floorshade = sp->shade;
|
sector[sect].floorshade = sp->shade;
|
||||||
sector[sect].ceilingshade = sp->shade;
|
sector[sect].ceilingshade = sp->shade;
|
||||||
|
|
||||||
sp->owner = (sector[sect].ceilingpal << 8) | sector[sect].floorpal; // hijack
|
actor->palvals = (sector[sect].ceilingpal << 8) | sector[sect].floorpal;
|
||||||
|
|
||||||
//fix all the walls;
|
//fix all the walls;
|
||||||
|
|
||||||
|
@ -897,7 +898,7 @@ void spawneffector(DDukeActor* actor)
|
||||||
startwall = sector[sect].wallptr;
|
startwall = sector[sect].wallptr;
|
||||||
endwall = startwall + sector[sect].wallnum;
|
endwall = startwall + sector[sect].wallnum;
|
||||||
|
|
||||||
sp->owner = (sector[sect].ceilingpal << 8) | sector[sect].floorpal; // hijack
|
actor->palvals = (sector[sect].ceilingpal << 8) | sector[sect].floorpal;
|
||||||
|
|
||||||
for (s = startwall; s < endwall; s++)
|
for (s = startwall; s < endwall; s++)
|
||||||
if (wall[s].shade > t[3])
|
if (wall[s].shade > t[3])
|
||||||
|
|
|
@ -28,7 +28,12 @@ struct weaponhit
|
||||||
short picnum, ang, extra, owner, movflag;
|
short picnum, ang, extra, owner, movflag;
|
||||||
short tempang, actorstayput, dispicnum;
|
short tempang, actorstayput, dispicnum;
|
||||||
short timetosleep;
|
short timetosleep;
|
||||||
int floorz, ceilingz, lastvx, lastvy, bposx, bposy, bposz, aflags, saved_ammo;
|
int floorz, ceilingz, lastvx, lastvy, bposx, bposy, bposz, aflags;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
int saved_ammo;
|
||||||
|
int palvals;
|
||||||
|
};
|
||||||
int temp_data[6];
|
int temp_data[6];
|
||||||
weaponhit* temp_actor, *seek_actor;
|
weaponhit* temp_actor, *seek_actor;
|
||||||
spritetype& s; // direct reference to the corresponding sprite.
|
spritetype& s; // direct reference to the corresponding sprite.
|
||||||
|
@ -69,15 +74,15 @@ struct weaponhit
|
||||||
owner = a->GetIndex();
|
owner = a->GetIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
// The crane is a good example of an actor hijacking the 'owner' field for something other than an actual owner. Abstract this away.
|
// This used the owner field - better move this to something more safe.
|
||||||
inline bool IsActiveCrane()
|
inline bool IsActiveCrane()
|
||||||
{
|
{
|
||||||
return s.owner == -2;
|
return palvals == -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void SetActiveCrane(bool yes)
|
inline void SetActiveCrane(bool yes)
|
||||||
{
|
{
|
||||||
s.owner = yes ? -2 : -1;
|
palvals = yes ? -2 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PlayerIndex() const
|
int PlayerIndex() const
|
||||||
|
|
Loading…
Reference in a new issue