Skip to content

Commit

Permalink
- clear all collision flags from generic controller sprites
Browse files Browse the repository at this point in the history
Taken from EDuke32 - there seem to be a few maps which need this.
Also consolidate a bit of setup code between Duke and RR.
  • Loading branch information
coelckers committed Jul 25, 2022
1 parent 7e8e6b1 commit 1df66f4
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 38 deletions.
1 change: 1 addition & 0 deletions source/games/duke/src/funct.h
Expand Up @@ -201,6 +201,7 @@ void spawneffector(DDukeActor* actor, TArray<DDukeActor*>* actors);
int startrts(int lumpNum, int localPlayer);

void pickrandomspot(int pn);
void premapcontroller(DDukeActor* ac);
void resetinventory(int pn);
void resetplayerstats(int pn);
void resetweapons(int pn);
Expand Down
35 changes: 35 additions & 0 deletions source/games/duke/src/premap.cpp
Expand Up @@ -43,6 +43,41 @@ BEGIN_DUKE_NS

int which_palookup = 9;

void premapcontroller(DDukeActor* ac)
{
switch (ac->spr.picnum)
{
case ACTIVATOR:
case ACTIVATORLOCKED:
case LOCATORS:
case MASTERSWITCH:
case MUSICANDSFX:
case RESPAWN:
case SECTOREFFECTOR:
case TOUCHPLATE:
ac->spr.cstat &= ~(CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN | CSTAT_SPRITE_ALIGNMENT_MASK);
break;

case GPSPEED:
ac->sector()->extra = ac->spr.lotag;
deletesprite(ac);
break;

case CYCLER:
if (numcyclers >= MAXCYCLERS)
I_Error("Too many cycling sectors.");
cyclers[numcyclers].sector = ac->sector();
cyclers[numcyclers].lotag = ac->spr.lotag;
cyclers[numcyclers].shade1 = ac->spr.shade;
cyclers[numcyclers].shade2 = ac->sector()->floorshade;
cyclers[numcyclers].hitag = ac->spr.hitag;
cyclers[numcyclers].state = (ac->spr.ang == 1536);
numcyclers++;
deletesprite(ac);
break;
}
}

//---------------------------------------------------------------------------
//
//
Expand Down
22 changes: 2 additions & 20 deletions source/games/duke/src/premap_d.cpp
Expand Up @@ -285,26 +285,8 @@ void prelevel_d(int g, TArray<DDukeActor*>& actors)
ps[0].exit.X = ac->spr.pos.X;
ps[0].exit.Y = ac->spr.pos.Y;
}
else switch (ac->spr.picnum)
{
case GPSPEED:
ac->sector()->extra = ac->spr.lotag;
deletesprite(ac);
break;

case CYCLER:
if (numcyclers >= MAXCYCLERS)
I_Error("Too many cycling sectors.");
cyclers[numcyclers].sector = ac->sector();
cyclers[numcyclers].lotag = ac->spr.lotag;
cyclers[numcyclers].shade1 = ac->spr.shade;
cyclers[numcyclers].shade2 = ac->sector()->floorshade;
cyclers[numcyclers].hitag = ac->spr.hitag;
cyclers[numcyclers].state = (ac->spr.ang == 1536);
numcyclers++;
deletesprite(ac);
break;
}
else
premapcontroller(ac);
}


Expand Down
22 changes: 4 additions & 18 deletions source/games/duke/src/premap_r.cpp
Expand Up @@ -531,28 +531,14 @@ void prelevel_r(int g, TArray<DDukeActor*>& actors)
}
else switch (ac->spr.picnum)
{
default:
premapcontroller(ac);
break;

case NUKEBUTTON:
chickenplant = 1;
break;

case GPSPEED:
ac->sector()->extra = ac->spr.lotag;
deletesprite(ac);
break;

case CYCLER:
if (numcyclers >= MAXCYCLERS)
I_Error("Too many cycling sectors.");
cyclers[numcyclers].sector = ac->sector();
cyclers[numcyclers].lotag = ac->spr.lotag;
cyclers[numcyclers].shade1 = ac->spr.shade;
cyclers[numcyclers].shade2 = ac->sector()->floorshade;
cyclers[numcyclers].hitag = ac->spr.hitag;
cyclers[numcyclers].state = (ac->spr.ang == 1536);
numcyclers++;
deletesprite(ac);
break;

case RRTILE18:
addtorch(ac);
deletesprite(ac);
Expand Down

0 comments on commit 1df66f4

Please sign in to comment.