- asound.cpp, blood.cpp, db.cpp and parts of callback.cpp

This commit is contained in:
Christoph Oelckers 2021-12-22 23:45:56 +01:00
parent 40a307650d
commit a1f6b363fb
4 changed files with 30 additions and 42 deletions

View file

@ -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;
}
}

View file

@ -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;

View file

@ -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:

View file

@ -41,10 +41,9 @@ BEGIN_BLD_NS
DBloodActor* InsertSprite(sectortype* pSector, int nStat)
{
auto act = static_cast<DBloodActor*>(::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;
}