mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 08:51:24 +00:00
- more st functions.
This commit is contained in:
parent
2a290dec48
commit
2aec8f47d3
1 changed files with 30 additions and 35 deletions
|
@ -657,10 +657,9 @@ static void handle_st16(sectortype* sptr, DDukeActor* actor)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void handle_st18(int sn, DDukeActor* actor)
|
static void handle_st18(sectortype* sptr, DDukeActor* actor)
|
||||||
{
|
{
|
||||||
sectortype* sptr = §or[sn];
|
int i = getanimationgoal(anim_floorz, sectnum(sptr));
|
||||||
int i = getanimationgoal(anim_floorz, sn);
|
|
||||||
|
|
||||||
if (i == -1)
|
if (i == -1)
|
||||||
{
|
{
|
||||||
|
@ -670,9 +669,9 @@ static void handle_st18(int sn, DDukeActor* actor)
|
||||||
int j = sectp->floorz;
|
int j = sectp->floorz;
|
||||||
int q = sptr->extra;
|
int q = sptr->extra;
|
||||||
int l = sptr->ceilingz - sptr->floorz;
|
int l = sptr->ceilingz - sptr->floorz;
|
||||||
setanimation(sn, anim_floorz, sn, j, q);
|
setanimation(sptr, anim_floorz, sptr, j, q);
|
||||||
setanimation(sn, anim_ceilingz, sn, j + l, q);
|
setanimation(sptr, anim_ceilingz, sptr, j + l, q);
|
||||||
callsound(sn, actor);
|
callsound(sptr, actor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -682,15 +681,14 @@ static void handle_st18(int sn, DDukeActor* actor)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void handle_st29(int sn, DDukeActor* actor)
|
static void handle_st29(sectortype* sptr, DDukeActor* actor)
|
||||||
{
|
{
|
||||||
sectortype* sptr = §or[sn];
|
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
if (sptr->lotag & 0x8000)
|
if (sptr->lotag & 0x8000)
|
||||||
j = nextsectorneighborzptr(sptr, sptr->ceilingz, 1, 1)->floorz;
|
j = nextsectorneighborzptr(sptr, sptr->ceilingz, 1, 1)->floorz;
|
||||||
else
|
else
|
||||||
j = nextsectorneighborzptr(sn, sptr->ceilingz, -1, -1)->ceilingz;
|
j = nextsectorneighborzptr(sptr, sptr->ceilingz, -1, -1)->ceilingz;
|
||||||
|
|
||||||
DukeStatIterator it(STAT_EFFECTOR);
|
DukeStatIterator it(STAT_EFFECTOR);
|
||||||
while (auto act2 = it.Next())
|
while (auto act2 = it.Next())
|
||||||
|
@ -700,16 +698,16 @@ static void handle_st29(int sn, DDukeActor* actor)
|
||||||
{
|
{
|
||||||
act2->getSector()->extra = -act2->getSector()->extra;
|
act2->getSector()->extra = -act2->getSector()->extra;
|
||||||
|
|
||||||
act2->temp_data[0] = sn;
|
act2->temp_data[0] = sectnum(sptr);
|
||||||
act2->temp_data[1] = 1;
|
act2->temp_data[1] = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sptr->lotag ^= 0x8000;
|
sptr->lotag ^= 0x8000;
|
||||||
|
|
||||||
setanimation(sn, anim_ceilingz, sn, j, sptr->extra);
|
setanimation(sptr, anim_ceilingz, sptr, j, sptr->extra);
|
||||||
|
|
||||||
callsound(sn, actor);
|
callsound(sptr, actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
@ -718,16 +716,15 @@ static void handle_st29(int sn, DDukeActor* actor)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void handle_st20(int sn, DDukeActor* actor)
|
static void handle_st20(sectortype* sptr, DDukeActor* actor)
|
||||||
{
|
{
|
||||||
sectortype* sptr = §or[sn];
|
|
||||||
int j = 0;
|
int j = 0;
|
||||||
REDODOOR:
|
REDODOOR:
|
||||||
|
|
||||||
if (sptr->lotag & 0x8000)
|
if (sptr->lotag & 0x8000)
|
||||||
{
|
{
|
||||||
DDukeActor* a2;
|
DDukeActor* a2;
|
||||||
DukeSectIterator it(sn);
|
DukeSectIterator it(sptr);
|
||||||
while ((a2 = it.Next()))
|
while ((a2 = it.Next()))
|
||||||
{
|
{
|
||||||
if (a2->s->statnum == 3 && a2->s->lotag == 9)
|
if (a2->s->statnum == 3 && a2->s->lotag == 9)
|
||||||
|
@ -753,8 +750,8 @@ REDODOOR:
|
||||||
|
|
||||||
sptr->lotag ^= 0x8000;
|
sptr->lotag ^= 0x8000;
|
||||||
|
|
||||||
setanimation(sn, anim_ceilingz, sn, j, sptr->extra);
|
setanimation(sptr, anim_ceilingz, sptr, j, sptr->extra);
|
||||||
callsound(sn, actor);
|
callsound(sptr, actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
@ -763,10 +760,9 @@ REDODOOR:
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void handle_st21(int sn, DDukeActor* actor)
|
static void handle_st21(sectortype* sptr, DDukeActor* actor)
|
||||||
{
|
{
|
||||||
sectortype* sptr = §or[sn];
|
int i = getanimationgoal(anim_floorz, sectnum(sptr));
|
||||||
int i = getanimationgoal(anim_floorz, sn);
|
|
||||||
int j;
|
int j;
|
||||||
if (i >= 0)
|
if (i >= 0)
|
||||||
{
|
{
|
||||||
|
@ -778,13 +774,13 @@ static void handle_st21(int sn, DDukeActor* actor)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (sptr->ceilingz == sptr->floorz)
|
if (sptr->ceilingz == sptr->floorz)
|
||||||
j = nextsectorneighborzptr(sn, sptr->ceilingz, 1, 1)->floorz;
|
j = nextsectorneighborzptr(sptr, sptr->ceilingz, 1, 1)->floorz;
|
||||||
else j = sptr->ceilingz;
|
else j = sptr->ceilingz;
|
||||||
|
|
||||||
sptr->lotag ^= 0x8000;
|
sptr->lotag ^= 0x8000;
|
||||||
|
|
||||||
if (setanimation(sn, anim_floorz, sn, j, sptr->extra) >= 0)
|
if (setanimation(sptr, anim_floorz, sptr, j, sptr->extra) >= 0)
|
||||||
callsound(sn, actor);
|
callsound(sptr, actor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -794,27 +790,26 @@ static void handle_st21(int sn, DDukeActor* actor)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
static void handle_st22(int sn, DDukeActor* actor)
|
static void handle_st22(sectortype* sptr, DDukeActor* actor)
|
||||||
{
|
{
|
||||||
sectortype* sptr = §or[sn];
|
|
||||||
int j, q;
|
int j, q;
|
||||||
if ((sptr->lotag & 0x8000))
|
if ((sptr->lotag & 0x8000))
|
||||||
{
|
{
|
||||||
q = (sptr->ceilingz + sptr->floorz) >> 1;
|
q = (sptr->ceilingz + sptr->floorz) >> 1;
|
||||||
j = setanimation(sn, anim_floorz, sn, q, sptr->extra);
|
j = setanimation(sptr, anim_floorz, sptr, q, sptr->extra);
|
||||||
j = setanimation(sn, anim_ceilingz, sn, q, sptr->extra);
|
j = setanimation(sptr, anim_ceilingz, sptr, q, sptr->extra);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
q = nextsectorneighborzptr(sptr, sptr->floorz, 1, 1)->floorz;
|
q = nextsectorneighborzptr(sptr, sptr->floorz, 1, 1)->floorz;
|
||||||
j = setanimation(sn, anim_floorz, sn, q, sptr->extra);
|
j = setanimation(sptr, anim_floorz, sptr, q, sptr->extra);
|
||||||
q = nextsectorneighborzptr(sptr, sptr->ceilingz, -1, -1)->ceilingz;
|
q = nextsectorneighborzptr(sptr, sptr->ceilingz, -1, -1)->ceilingz;
|
||||||
j = setanimation(sn, anim_ceilingz, sn, q, sptr->extra);
|
j = setanimation(sptr, anim_ceilingz, sptr, q, sptr->extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
sptr->lotag ^= 0x8000;
|
sptr->lotag ^= 0x8000;
|
||||||
|
|
||||||
callsound(sn, actor);
|
callsound(sptr, actor);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1047,22 +1042,22 @@ void operatesectors(int sn, DDukeActor *actor)
|
||||||
|
|
||||||
case ST_18_ELEVATOR_DOWN:
|
case ST_18_ELEVATOR_DOWN:
|
||||||
case ST_19_ELEVATOR_UP:
|
case ST_19_ELEVATOR_UP:
|
||||||
handle_st18(sn, actor);
|
handle_st18(sptr, actor);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case ST_29_TEETH_DOOR:
|
case ST_29_TEETH_DOOR:
|
||||||
handle_st29(sn, actor);
|
handle_st29(sptr, actor);
|
||||||
return;
|
return;
|
||||||
case ST_20_CEILING_DOOR:
|
case ST_20_CEILING_DOOR:
|
||||||
handle_st20(sn, actor);
|
handle_st20(sptr, actor);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case ST_21_FLOOR_DOOR:
|
case ST_21_FLOOR_DOOR:
|
||||||
handle_st21(sn, actor);
|
handle_st21(sptr, actor);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case ST_22_SPLITTING_DOOR:
|
case ST_22_SPLITTING_DOOR:
|
||||||
handle_st22(sn, actor);
|
handle_st22(sptr, actor);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case ST_23_SWINGING_DOOR: //Swingdoor
|
case ST_23_SWINGING_DOOR: //Swingdoor
|
||||||
|
|
Loading…
Reference in a new issue