- x() is gone entirely.

This commit is contained in:
Christoph Oelckers 2021-12-23 15:55:27 +01:00
parent e940fe1931
commit bd47f56a5c
4 changed files with 24 additions and 34 deletions

View file

@ -66,8 +66,6 @@ public:
bool hasX() { return hasx; }
void addX() { hasx = true; }
XSPRITE& x() { return xspr; } // calling this does not validate the xsprite!
void SetOwner(DBloodActor* own)
{
ownerActor = own;
@ -80,12 +78,12 @@ public:
void SetTarget(DBloodActor* own)
{
x().target = own;
xspr.target = own;
}
DBloodActor* GetTarget()
{
return x().target;
return xspr.target;
}
bool ValidateTarget(const char* func)
@ -100,12 +98,12 @@ public:
void SetBurnSource(DBloodActor* own)
{
x().burnSource = own;
xspr.burnSource = own;
}
DBloodActor* GetBurnSource()
{
return x().burnSource;
return xspr.burnSource;
}
void SetSpecialOwner() // nnext hackery
@ -149,7 +147,7 @@ public:
if (!hasX())
return false;
switch (x().aiState->stateType)
switch (xspr.aiState->stateType)
{
case kAiStateIdle:
case kAiStateGenIdle:

View file

@ -766,8 +766,7 @@ void playerStart(int nPlayer, int bNewLevel)
BloodStatIterator it(kStatModernPlayerLinker);
while (auto iactor = it.Next())
{
XSPRITE* pXCtrl = &iactor->x();
if (pXCtrl->data1 == pPlayer->nPlayer + 1)
if (iactor->xspr.data1 == pPlayer->nPlayer + 1)
{
DBloodActor* SpriteOld = iactor->prevmarker;
trPlayerCtrlLink(iactor, pPlayer, (SpriteOld == nullptr)); // this modifies iactor's prevmarker field!
@ -918,10 +917,9 @@ bool PickupItem(PLAYER *pPlayer, DBloodActor* itemactor)
case kItemFlagABase:
case kItemFlagBBase: {
if (gGameOptions.nGameType != 3 || !itemactor->hasX()) return 0;
XSPRITE * pXItem = &itemactor->x();
if (itemactor->spr.type == kItemFlagABase) {
if (pPlayer->teamId == 1) {
if ((pPlayer->hasFlag & 1) == 0 && pXItem->state) {
if ((pPlayer->hasFlag & 1) == 0 && itemactor->xspr.state) {
pPlayer->hasFlag |= 1;
pPlayer->ctfFlagState[0] = itemactor;
trTriggerSprite(itemactor, kCmdOff);
@ -933,7 +931,7 @@ bool PickupItem(PLAYER *pPlayer, DBloodActor* itemactor)
if (pPlayer->teamId == 0) {
if ((pPlayer->hasFlag & 1) != 0 && !pXItem->state) {
if ((pPlayer->hasFlag & 1) != 0 && !itemactor->xspr.state) {
pPlayer->hasFlag &= ~1;
pPlayer->ctfFlagState[0] = nullptr;
trTriggerSprite(itemactor, kCmdOn);
@ -942,7 +940,7 @@ bool PickupItem(PLAYER *pPlayer, DBloodActor* itemactor)
viewSetMessage(buffer);
}
if ((pPlayer->hasFlag & 2) != 0 && pXItem->state) {
if ((pPlayer->hasFlag & 2) != 0 && itemactor->xspr.state) {
pPlayer->hasFlag &= ~2;
pPlayer->ctfFlagState[1] = nullptr;
team_score[pPlayer->teamId] += 10;
@ -958,7 +956,7 @@ bool PickupItem(PLAYER *pPlayer, DBloodActor* itemactor)
else if (itemactor->spr.type == kItemFlagBBase) {
if (pPlayer->teamId == 0) {
if ((pPlayer->hasFlag & 2) == 0 && pXItem->state) {
if ((pPlayer->hasFlag & 2) == 0 && itemactor->xspr.state) {
pPlayer->hasFlag |= 2;
pPlayer->ctfFlagState[1] = itemactor;
trTriggerSprite(itemactor, kCmdOff);
@ -969,7 +967,7 @@ bool PickupItem(PLAYER *pPlayer, DBloodActor* itemactor)
}
if (pPlayer->teamId == 1) {
if ((pPlayer->hasFlag & 2) != 0 && !pXItem->state)
if ((pPlayer->hasFlag & 2) != 0 && !itemactor->xspr.state)
{
pPlayer->hasFlag &= ~2;
pPlayer->ctfFlagState[1] = nullptr;
@ -978,7 +976,7 @@ bool PickupItem(PLAYER *pPlayer, DBloodActor* itemactor)
sndStartSample(8002, 255, 2, 0);
viewSetMessage(buffer);
}
if ((pPlayer->hasFlag & 1) != 0 && pXItem->state)
if ((pPlayer->hasFlag & 1) != 0 && itemactor->xspr.state)
{
pPlayer->hasFlag &= ~1;
pPlayer->ctfFlagState[0] = nullptr;

View file

@ -441,7 +441,6 @@ void OperateSprite(DBloodActor* actor, EVENT event)
{
auto spawned = actSpawnDude(actor, actor->xspr.data1, -1, 0);
if (spawned) {
XSPRITE *pXSpawn = &spawned->x();
gKillMgr.AddNewKill(1);
switch (actor->xspr.data1) {
case kDudeBurningInnocent:
@ -449,8 +448,8 @@ void OperateSprite(DBloodActor* actor, EVENT event)
case kDudeBurningZombieButcher:
case kDudeBurningTinyCaleb:
case kDudeBurningBeast: {
pXSpawn->health = getDudeInfo(actor->xspr.data1)->startHealth << 4;
pXSpawn->burnTime = 10;
spawned->xspr.health = getDudeInfo(actor->xspr.data1)->startHealth << 4;
spawned->xspr.burnTime = 10;
spawned->SetTarget(nullptr);
aiActivateDude(spawned);
break;
@ -1283,22 +1282,19 @@ int PathBusy(sectortype* pSector, unsigned int a2)
auto marker1 = pXSector->marker1;
if (!basepath || !marker0 || !marker1) return 0;
XSPRITE *pXSprite1 = &pXSector->marker0->x();
XSPRITE *pXSprite2 = &pXSector->marker1->x();
int nWave = pXSprite1->wave;
int nWave = marker0->xspr.wave;
TranslateSector(pSector, GetWaveValue(pXSector->busy, nWave), GetWaveValue(a2, nWave), basepath->spr.pos.X, basepath->spr.pos.Y, marker0->spr.pos.X, marker0->spr.pos.Y, marker0->spr.ang, marker1->spr.pos.X, marker1->spr.pos.Y, marker1->spr.ang, 1);
ZTranslateSector(pSector, pXSector, a2, nWave);
pXSector->busy = a2;
if ((a2&0xffff) == 0)
{
evPostSector(pSector, (120*pXSprite2->waitTime)/10, kCmdOn);
evPostSector(pSector, (120*marker1->xspr.waitTime)/10, kCmdOn);
pXSector->state = 0;
pXSector->busy = 0;
if (pXSprite1->data4)
PathSound(pSector, pXSprite1->data4);
if (marker0->xspr.data4)
PathSound(pSector, marker0->xspr.data4);
pXSector->marker0 = marker1;
pXSector->data = pXSprite2->data1;
pXSector->data = marker1->xspr.data1;
return 3;
}
return 0;
@ -1413,8 +1409,8 @@ void OperatePath(sectortype* pSector, EVENT event)
auto pXSector = &pSector->xs();
if (!pXSector->marker0) return;
auto marker0 = pXSector->marker0;
XSPRITE *pXSprite2 = &pXSector->marker0->x();
int nId = pXSprite2->data2;
auto marker1 = pXSector->marker1;
int nId = marker1->xspr.data2;
BloodStatIterator it(kStatPathMarker);
while ((actor = it.Next()))
@ -1428,7 +1424,7 @@ void OperatePath(sectortype* pSector, EVENT event)
// trigger marker after it gets reached
#ifdef NOONE_EXTENSIONS
if (gModernMap && pXSprite2->state != 1)
if (gModernMap && marker1->xspr.state != 1)
trTriggerSprite(pXSector->marker0, kCmdOn);
#endif
@ -1446,8 +1442,8 @@ void OperatePath(sectortype* pSector, EVENT event)
case kCmdOn:
pXSector->state = 0;
pXSector->busy = 0;
AddBusy(pSector, BUSYID_7, 65536/ClipLow((120*pXSprite2->busyTime)/10,1));
if (pXSprite2->data3) PathSound(pSector, pXSprite2->data3);
AddBusy(pSector, BUSYID_7, 65536/ClipLow((120*marker1->xspr.busyTime)/10,1));
if (marker1->xspr.data3) PathSound(pSector, marker1->xspr.data3);
break;
}
}

View file

@ -53,8 +53,6 @@ struct BloodPlayer native
{
native int GetHealth(); // health is stored in the XSPRITE which cannot be safely exported to scripting at the moment due to pending refactoring.
native int powerupCheck(int pwup);
//spritetype* pSprite;
//XSPRITE* pXSprite;
//DUDEINFO* pDudeInfo;
//PlayerHorizon horizon;
//PlayerAngle angle;