mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-13 04:24:39 +00:00
- more trigger stuff
This commit is contained in:
parent
2967edf827
commit
7442edc59f
3 changed files with 27 additions and 25 deletions
|
@ -5356,8 +5356,9 @@ void sectorContinueMotion(sectortype* pSector, EVENT event)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
bool modernTypeOperateSector(int nSector, sectortype* pSector, XSECTOR* pXSector, const EVENT& event)
|
bool modernTypeOperateSector(sectortype* pSector, const EVENT& event)
|
||||||
{
|
{
|
||||||
|
auto pXSector = &pSector->xs();
|
||||||
if (event.cmd >= kCmdLock && event.cmd <= kCmdToggleLock)
|
if (event.cmd >= kCmdLock && event.cmd <= kCmdToggleLock)
|
||||||
{
|
{
|
||||||
switch (event.cmd)
|
switch (event.cmd)
|
||||||
|
|
|
@ -332,7 +332,7 @@ void trPlayerCtrlLink(DBloodActor* pXSource, PLAYER* pPlayer, bool checkConditio
|
||||||
void trPlayerCtrlStopScene(PLAYER* pPlayer);
|
void trPlayerCtrlStopScene(PLAYER* pPlayer);
|
||||||
// ------------------------------------------------------------------------- //
|
// ------------------------------------------------------------------------- //
|
||||||
void modernTypeTrigger(int type, sectortype*sect, walltype* wal, DBloodActor* actor, const EVENT& event);
|
void modernTypeTrigger(int type, sectortype*sect, walltype* wal, DBloodActor* actor, const EVENT& event);
|
||||||
bool modernTypeOperateSector(int nSector, sectortype* pSector, XSECTOR* pXSector, const EVENT& event);
|
bool modernTypeOperateSector(sectortype* pSector, const EVENT& event);
|
||||||
bool modernTypeOperateSprite(DBloodActor*, const EVENT& event);
|
bool modernTypeOperateSprite(DBloodActor*, const EVENT& event);
|
||||||
bool modernTypeOperateWall(walltype* pWall, const EVENT& event);
|
bool modernTypeOperateWall(walltype* pWall, const EVENT& event);
|
||||||
void modernTypeSendCommand(DBloodActor* nSprite, int channel, COMMAND_ID command);
|
void modernTypeSendCommand(DBloodActor* nSprite, int channel, COMMAND_ID command);
|
||||||
|
|
|
@ -746,9 +746,9 @@ void SectorEndSound(sectortype* pSector, int nState)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PathSound(int nSector, int nSound)
|
void PathSound(sectortype* pSector, int nSound)
|
||||||
{
|
{
|
||||||
BloodSectIterator it(nSector);
|
BloodSectIterator it(pSector);
|
||||||
while (auto actor = it.Next())
|
while (auto actor = it.Next())
|
||||||
{
|
{
|
||||||
spritetype* pSprite = &actor->s();
|
spritetype* pSprite = &actor->s();
|
||||||
|
@ -759,7 +759,7 @@ void PathSound(int nSector, int nSound)
|
||||||
|
|
||||||
void DragPoint(walltype* pWall, int x, int y)
|
void DragPoint(walltype* pWall, int x, int y)
|
||||||
{
|
{
|
||||||
sector[pWall->sector].dirty = 255;
|
pWall->sectorp()->dirty = 255;
|
||||||
viewInterpolateWall(pWall);
|
viewInterpolateWall(pWall);
|
||||||
pWall->x = x;
|
pWall->x = x;
|
||||||
pWall->y = y;
|
pWall->y = y;
|
||||||
|
@ -1323,7 +1323,7 @@ int PathBusy(sectortype* pSector, unsigned int a2)
|
||||||
pXSector->state = 0;
|
pXSector->state = 0;
|
||||||
pXSector->busy = 0;
|
pXSector->busy = 0;
|
||||||
if (pXSprite1->data4)
|
if (pXSprite1->data4)
|
||||||
PathSound(sectnum(pSector), pXSprite1->data4);
|
PathSound(pSector, pXSprite1->data4);
|
||||||
pXSector->marker0 = pXSector->marker1;
|
pXSector->marker0 = pXSector->marker1;
|
||||||
pXSector->data = pXSprite2->data1;
|
pXSector->data = pXSprite2->data1;
|
||||||
return 3;
|
return 3;
|
||||||
|
@ -1331,9 +1331,9 @@ int PathBusy(sectortype* pSector, unsigned int a2)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OperateDoor(unsigned int nSector, XSECTOR *pXSector, EVENT event, BUSYID busyWave)
|
void OperateDoor(sectortype* pSector, EVENT event, BUSYID busyWave)
|
||||||
{
|
{
|
||||||
auto pSector = §or[nSector];
|
auto pXSector = &pSector->xs();
|
||||||
switch (event.cmd) {
|
switch (event.cmd) {
|
||||||
case kCmdOff:
|
case kCmdOff:
|
||||||
if (!pXSector->busy) break;
|
if (!pXSector->busy) break;
|
||||||
|
@ -1389,16 +1389,17 @@ void TeleFrag(DBloodActor* killer, sectortype* pSector)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OperateTeleport(unsigned int nSector, XSECTOR *pXSector)
|
void OperateTeleport(sectortype* pSector)
|
||||||
{
|
{
|
||||||
assert(nSector < (unsigned int)numsectors);
|
assert(pSector);
|
||||||
|
auto pXSector = &pSector->xs();
|
||||||
auto nDest = pXSector->marker0;
|
auto nDest = pXSector->marker0;
|
||||||
assert(nDest != nullptr);
|
assert(nDest != nullptr);
|
||||||
spritetype *pDest = &nDest->s();
|
spritetype *pDest = &nDest->s();
|
||||||
assert(pDest->statnum == kStatMarker);
|
assert(pDest->statnum == kStatMarker);
|
||||||
assert(pDest->type == kMarkerWarpDest);
|
assert(pDest->type == kMarkerWarpDest);
|
||||||
assert(validSectorIndex(pDest->sectnum));
|
assert(validSectorIndex(pDest->sectnum));
|
||||||
BloodSectIterator it(nSector);
|
BloodSectIterator it(pSector);
|
||||||
while (auto actor = it.Next())
|
while (auto actor = it.Next())
|
||||||
{
|
{
|
||||||
spritetype *pSprite = &actor->s();
|
spritetype *pSprite = &actor->s();
|
||||||
|
@ -1418,7 +1419,7 @@ void OperateTeleport(unsigned int nSector, XSECTOR *pXSector)
|
||||||
}
|
}
|
||||||
pSprite->x = pDest->x;
|
pSprite->x = pDest->x;
|
||||||
pSprite->y = pDest->y;
|
pSprite->y = pDest->y;
|
||||||
pSprite->z += sector[pDest->sectnum].floorz-sector[nSector].floorz;
|
pSprite->z += pDest->sector()->floorz - pSector->floorz;
|
||||||
pSprite->ang = pDest->ang;
|
pSprite->ang = pDest->ang;
|
||||||
ChangeActorSect(actor, pDest->sector());
|
ChangeActorSect(actor, pDest->sector());
|
||||||
sfxPlay3DSound(pDest, 201, -1, 0);
|
sfxPlay3DSound(pDest, 201, -1, 0);
|
||||||
|
@ -1436,13 +1437,13 @@ void OperateTeleport(unsigned int nSector, XSECTOR *pXSector)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OperatePath(unsigned int nSector, XSECTOR *pXSector, EVENT event)
|
void OperatePath(sectortype* pSector, EVENT event)
|
||||||
{
|
{
|
||||||
DBloodActor* actor;
|
DBloodActor* actor;
|
||||||
spritetype *pSprite = NULL;
|
spritetype *pSprite = NULL;
|
||||||
XSPRITE *pXSprite;
|
XSPRITE *pXSprite;
|
||||||
assert(nSector < (unsigned int)numsectors);
|
assert(pSector);
|
||||||
auto pSector = §or[nSector];
|
auto pXSector = &pSector->xs();
|
||||||
if (!pXSector->marker0) return;
|
if (!pXSector->marker0) return;
|
||||||
spritetype* pSprite2 = &pXSector->marker0->s();
|
spritetype* pSprite2 = &pXSector->marker0->s();
|
||||||
XSPRITE *pXSprite2 = &pXSector->marker0->x();
|
XSPRITE *pXSprite2 = &pXSector->marker0->x();
|
||||||
|
@ -1467,7 +1468,7 @@ void OperatePath(unsigned int nSector, XSECTOR *pXSector, EVENT event)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (actor == nullptr) {
|
if (actor == nullptr) {
|
||||||
viewSetSystemMessage("Unable to find path marker with id #%d for path sector #%d", nId, nSector);
|
viewSetSystemMessage("Unable to find path marker with id #%d for path sector", nId);
|
||||||
pXSector->state = 0;
|
pXSector->state = 0;
|
||||||
pXSector->busy = 0;
|
pXSector->busy = 0;
|
||||||
return;
|
return;
|
||||||
|
@ -1481,7 +1482,7 @@ void OperatePath(unsigned int nSector, XSECTOR *pXSector, EVENT event)
|
||||||
pXSector->state = 0;
|
pXSector->state = 0;
|
||||||
pXSector->busy = 0;
|
pXSector->busy = 0;
|
||||||
AddBusy(pSector, BUSYID_7, 65536/ClipLow((120*pXSprite2->busyTime)/10,1));
|
AddBusy(pSector, BUSYID_7, 65536/ClipLow((120*pXSprite2->busyTime)/10,1));
|
||||||
if (pXSprite2->data3) PathSound(nSector, pXSprite2->data3);
|
if (pXSprite2->data3) PathSound(pSector, pXSprite2->data3);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1491,7 +1492,7 @@ void OperateSector(sectortype* pSector, EVENT event)
|
||||||
if (!pSector->hasX()) return;
|
if (!pSector->hasX()) return;
|
||||||
auto pXSector = &pSector->xs();
|
auto pXSector = &pSector->xs();
|
||||||
#ifdef NOONE_EXTENSIONS
|
#ifdef NOONE_EXTENSIONS
|
||||||
if (gModernMap && modernTypeOperateSector(sectnum(pSector), pSector, pXSector, event))
|
if (gModernMap && modernTypeOperateSector(pSector, event))
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1525,18 +1526,18 @@ void OperateSector(sectortype* pSector, EVENT event)
|
||||||
#endif
|
#endif
|
||||||
switch (pSector->type) {
|
switch (pSector->type) {
|
||||||
case kSectorZMotionSprite:
|
case kSectorZMotionSprite:
|
||||||
OperateDoor(nSector, pXSector, event, BUSYID_1);
|
OperateDoor(pSector,event, BUSYID_1);
|
||||||
break;
|
break;
|
||||||
case kSectorZMotion:
|
case kSectorZMotion:
|
||||||
OperateDoor(nSector, pXSector, event, BUSYID_2);
|
OperateDoor(pSector,event, BUSYID_2);
|
||||||
break;
|
break;
|
||||||
case kSectorSlideMarked:
|
case kSectorSlideMarked:
|
||||||
case kSectorSlide:
|
case kSectorSlide:
|
||||||
OperateDoor(nSector, pXSector, event, BUSYID_3);
|
OperateDoor(pSector,event, BUSYID_3);
|
||||||
break;
|
break;
|
||||||
case kSectorRotateMarked:
|
case kSectorRotateMarked:
|
||||||
case kSectorRotate:
|
case kSectorRotate:
|
||||||
OperateDoor(nSector, pXSector, event, BUSYID_4);
|
OperateDoor(pSector,event, BUSYID_4);
|
||||||
break;
|
break;
|
||||||
case kSectorRotateStep:
|
case kSectorRotateStep:
|
||||||
switch (event.cmd) {
|
switch (event.cmd) {
|
||||||
|
@ -1555,10 +1556,10 @@ void OperateSector(sectortype* pSector, EVENT event)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case kSectorTeleport:
|
case kSectorTeleport:
|
||||||
OperateTeleport(nSector, pXSector);
|
OperateTeleport(pSector);
|
||||||
break;
|
break;
|
||||||
case kSectorPath:
|
case kSectorPath:
|
||||||
OperatePath(nSector, pXSector, event);
|
OperatePath(pSector, event);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (!pXSector->busyTimeA && !pXSector->busyTimeB) {
|
if (!pXSector->busyTimeA && !pXSector->busyTimeB) {
|
||||||
|
@ -1577,7 +1578,7 @@ void OperateSector(sectortype* pSector, EVENT event)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
OperateDoor(nSector, pXSector, event, BUSYID_6);
|
OperateDoor(pSector,event, BUSYID_6);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue