diff --git a/source/games/blood/src/asound.cpp b/source/games/blood/src/asound.cpp index 35f202afd..3b0b7ee3d 100644 --- a/source/games/blood/src/asound.cpp +++ b/source/games/blood/src/asound.cpp @@ -48,23 +48,21 @@ void ambProcess(void) BloodStatIterator it(kStatAmbience); while (DBloodActor* actor = it.Next()) { - spritetype *pSprite = &actor->s(); - if (pSprite->owner < 0 || pSprite->owner >= kMaxAmbChannel) + if (actor->spr.owner < 0 || actor->spr.owner >= kMaxAmbChannel) continue; if (actor->hasX()) { - XSPRITE *pXSprite = &actor->x(); - if (pXSprite->state) + if (actor->xspr.state) { - int dx = pSprite->pos.X-gMe->pSprite->pos.X; - int dy = pSprite->pos.Y-gMe->pSprite->pos.Y; - int dz = pSprite->pos.Z-gMe->pSprite->pos.Z; + int dx = actor->spr.pos.X-gMe->actor->spr.pos.X; + int dy = actor->spr.pos.Y-gMe->actor->spr.pos.Y; + int dz = actor->spr.pos.Z-gMe->actor->spr.pos.Z; dx >>= 4; dy >>= 4; dz >>= 8; int nDist = ksqrt(dx*dx+dy*dy+dz*dz); - int vs = MulScale(pXSprite->data4, pXSprite->busy, 16); - ambChannels[pSprite->owner].distance += ClipRange(scale(nDist, pXSprite->data1, pXSprite->data2, vs, 0), 0, vs); + int vs = MulScale(actor->xspr.data4, actor->xspr.busy, 16); + ambChannels[actor->spr.owner].distance += ClipRange(scale(nDist, actor->xspr.data1, actor->xspr.data2, vs, 0), 0, vs); } } } @@ -110,24 +108,22 @@ void ambInit(void) BloodStatIterator it(kStatAmbience); while (DBloodActor* actor = it.Next()) { - spritetype* pSprite = &actor->s(); if (!actor->hasX()) continue; - XSPRITE* pXSprite = &actor->x(); - if (pXSprite->data1 >= pXSprite->data2) continue; + if (actor->xspr.data1 >= actor->xspr.data2) continue; int i; AMB_CHANNEL *pChannel = ambChannels; for (i = 0; i < nAmbChannels; i++, pChannel++) - if (pXSprite->data3 == pChannel->check) break; + if (actor->xspr.data3 == pChannel->check) break; if (i == nAmbChannels) { if (i >= kMaxAmbChannel) { - pSprite->owner = -1; + actor->spr.owner = -1; continue; } - int nSFX = pXSprite->data3; + int nSFX = actor->xspr.data3; auto snd = soundEngine->FindSoundByResID(nSFX); if (!snd) { //I_Error("Missing sound #%d used in ambient sound generator %d\n", nSFX); @@ -143,7 +139,7 @@ void ambInit(void) } - pSprite->owner = i; + actor->spr.owner = i; } } diff --git a/source/games/blood/src/blood.cpp b/source/games/blood/src/blood.cpp index 0a250835f..1b3f61ce7 100644 --- a/source/games/blood/src/blood.cpp +++ b/source/games/blood/src/blood.cpp @@ -232,15 +232,11 @@ void StartLevel(MapRecord* level, bool newgame) int modernTypesErased = 0; for (auto actor : actorlist) { - - spritetype* pSprite = &actor->s(); if (actor->exists() && actor->hasX()) { - - XSPRITE* pXSprite = &actor->x(); - if ((pXSprite->lSkill & (1 << gGameOptions.nDifficulty)) || (pXSprite->lS && gGameOptions.nGameType == 0) - || (pXSprite->lB && gGameOptions.nGameType == 2) || (pXSprite->lT && gGameOptions.nGameType == 3) - || (pXSprite->lC && gGameOptions.nGameType == 1)) { + if ((actor->xspr.lSkill & (1 << gGameOptions.nDifficulty)) || (actor->xspr.lS && gGameOptions.nGameType == 0) + || (actor->xspr.lB && gGameOptions.nGameType == 2) || (actor->xspr.lT && gGameOptions.nGameType == 3) + || (actor->xspr.lC && gGameOptions.nGameType == 1)) { DeleteSprite(actor); continue; diff --git a/source/games/blood/src/callback.cpp b/source/games/blood/src/callback.cpp index f28e3f641..0d62760a7 100644 --- a/source/games/blood/src/callback.cpp +++ b/source/games/blood/src/callback.cpp @@ -76,12 +76,11 @@ void FlareBurst(DBloodActor* actor, sectortype*) // 2 for (int i = 0; i < 8; i++) { auto spawnedactor = actSpawnSprite(actor, 5); - spritetype *pSpawn = &spawnedactor->s(); - pSpawn->picnum = 2424; - pSpawn->shade = -128; - pSpawn->xrepeat = pSpawn->yrepeat = 32; - pSpawn->type = kMissileFlareAlt; - pSpawn->clipdist = 2; + spawnedactor->spr.picnum = 2424; + spawnedactor->spr.shade = -128; + spawnedactor->spr.xrepeat = spawnedactor->spr.yrepeat = 32; + spawnedactor->spr.type = kMissileFlareAlt; + spawnedactor->spr.clipdist = 2; spawnedactor->SetOwner(actor); int nAngle2 = (i<<11)/8; int dx = 0; @@ -600,13 +599,12 @@ void sub_76A08(DBloodActor *actor, DBloodActor *actor2, PLAYER *pPlayer) // ??? { int top, bottom; auto pSprite = &actor->s(); - auto pSprite2 = &actor2->s(); GetSpriteExtents(pSprite, &top, &bottom); - pSprite->pos.X = pSprite2->pos.X; - pSprite->pos.Y = pSprite2->pos.Y; - pSprite->pos.Z = pSprite2->sector()->floorz-(bottom-pSprite->pos.Z); - pSprite->ang = pSprite2->ang; - ChangeActorSect(actor, pSprite2->sector()); + pSprite->pos.X = actor2->spr.pos.X; + pSprite->pos.Y = actor2->spr.pos.Y; + pSprite->pos.Z = actor2->spr.sector()->floorz-(bottom-pSprite->pos.Z); + pSprite->ang = actor2->spr.ang; + ChangeActorSect(actor, actor2->spr.sector()); sfxPlay3DSound(actor2, 201, -1, 0); actor->xvel = actor->yvel = actor->zvel = 0; viewBackupSpriteLoc(actor); @@ -654,13 +652,12 @@ void DropVoodooCb(DBloodActor* actor, sectortype*) // unused auto nextactor = it.Peek(); if (Owner == actor2) continue; - spritetype *pSprite2 = &actor2->s(); if (actor2->hasX()) { XSPRITE *pXSprite2 = &actor2->x(); PLAYER *pPlayer2; if (actor2->IsPlayerActor()) - pPlayer2 = &gPlayer[pSprite2->type-kDudePlayer1]; + pPlayer2 = &gPlayer[actor2->spr.type-kDudePlayer1]; else pPlayer2 = nullptr; @@ -687,7 +684,7 @@ void DropVoodooCb(DBloodActor* actor, sectortype*) // unused else { int vd = 0x2666; - switch (pSprite2->type) + switch (actor2->spr.type) { case kDudeBoneEel: case kDudeBat: diff --git a/source/games/blood/src/db.cpp b/source/games/blood/src/db.cpp index 79a0d19a6..9434032e2 100644 --- a/source/games/blood/src/db.cpp +++ b/source/games/blood/src/db.cpp @@ -41,10 +41,9 @@ BEGIN_BLD_NS DBloodActor* InsertSprite(sectortype* pSector, int nStat) { auto act = static_cast(::InsertActor(RUNTIME_CLASS(DBloodActor), pSector, nStat)); - auto pSprite = &act->s(); - pSprite->cstat = CSTAT_SPRITE_YCENTER; - pSprite->clipdist = 32; - pSprite->xrepeat = pSprite->yrepeat = 64; + act->spr.cstat = CSTAT_SPRITE_YCENTER; + act->spr.clipdist = 32; + act->spr.xrepeat = act->spr.yrepeat = 64; return act; }