mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-21 03:01:36 +00:00
- besttarget and Player::nTarget.
This commit is contained in:
parent
8e13bb6e35
commit
076a995c6e
8 changed files with 31 additions and 36 deletions
|
@ -153,7 +153,7 @@ short bInDemo = false;
|
|||
short bSlipMode = false;
|
||||
short bDoFlashes = true;
|
||||
|
||||
short besttarget;
|
||||
DExhumedActor* bestTarget;
|
||||
|
||||
short scan_char = 0;
|
||||
|
||||
|
@ -429,11 +429,11 @@ void GameInterface::Ticker()
|
|||
sPlayerInput[nLocalPlayer].xVel = lPlayerXVel;
|
||||
sPlayerInput[nLocalPlayer].yVel = lPlayerYVel;
|
||||
sPlayerInput[nLocalPlayer].buttons = lLocalCodes;
|
||||
sPlayerInput[nLocalPlayer].nTarget = besttarget;
|
||||
sPlayerInput[nLocalPlayer].pTarget = bestTarget;
|
||||
sPlayerInput[nLocalPlayer].nAngle = localInput.avel;
|
||||
sPlayerInput[nLocalPlayer].pan = localInput.horz;
|
||||
|
||||
Ra[nLocalPlayer].pTarget = &exhumedActors[besttarget];
|
||||
Ra[nLocalPlayer].pTarget = bestTarget;
|
||||
|
||||
lLocalCodes = 0;
|
||||
|
||||
|
@ -521,8 +521,8 @@ void DeleteActor(DExhumedActor* actor)
|
|||
deletesprite(actor->GetSpriteIndex());
|
||||
actor->s().ox = 0x80000000;
|
||||
|
||||
if (actor->GetSpriteIndex() == besttarget) {
|
||||
besttarget = -1;
|
||||
if (actor == bestTarget) {
|
||||
bestTarget = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -625,7 +625,7 @@ void SerializeState(FSerializer& arc)
|
|||
InitEnergyTile();
|
||||
}
|
||||
|
||||
arc ("besttarget", besttarget)
|
||||
arc ("besttarget", bestTarget)
|
||||
("creaturestotal", nCreaturesTotal)
|
||||
("creatureskilled", nCreaturesKilled)
|
||||
("freeze", nFreeze)
|
||||
|
|
|
@ -66,7 +66,6 @@ void TintPalette(int a, int b, int c);
|
|||
|
||||
void EraseScreen(int eax);
|
||||
|
||||
void mychangespritesect(int nSprite, int nSector);
|
||||
void DeleteActor(DExhumedActor* actor);
|
||||
|
||||
void GrabPalette();
|
||||
|
|
|
@ -824,27 +824,22 @@ loc_flag:
|
|||
int h = PlayerList[nLocalPlayer].horizon.horiz.asq16() >> 14;
|
||||
nHeight -= h;
|
||||
|
||||
int target = 0;
|
||||
bool gottarg = false;
|
||||
if (sPlayerInput[nPlayer].nTarget >= 0 && Autoaim(nPlayer))
|
||||
DExhumedActor* target = nullptr;
|
||||
if (sPlayerInput[nPlayer].pTarget != nullptr && Autoaim(nPlayer))
|
||||
{
|
||||
int t = sPlayerInput[nPlayer].nTarget;
|
||||
if (t >= 0 && t < MAXSPRITES)
|
||||
auto t = sPlayerInput[nPlayer].pTarget;
|
||||
// only autoaim if target is in front of the player.
|
||||
auto pTargetSprite = &t->s();
|
||||
assert(pTargetSprite->sectnum < kMaxSectors);
|
||||
int angletotarget = bvectangbam(pTargetSprite->x - pPlayerSprite->x, pTargetSprite->y - pPlayerSprite->y).asbuild();
|
||||
int anglediff = (pPlayerSprite->ang - angletotarget) & 2047;
|
||||
if (anglediff < 512 || anglediff > 1536)
|
||||
{
|
||||
// only autoaim if target is in front of the player.
|
||||
auto pTargetSprite = &sprite[t];
|
||||
assert(pTargetSprite->sectnum < kMaxSectors);
|
||||
int angletotarget = bvectangbam(pTargetSprite->x - pPlayerSprite->x, pTargetSprite->y - pPlayerSprite->y).asbuild();
|
||||
int anglediff = (pPlayerSprite->ang - angletotarget) & 2047;
|
||||
if (anglediff < 512 || anglediff > 1536)
|
||||
{
|
||||
target = t;
|
||||
gottarg = true;
|
||||
}
|
||||
target = t;
|
||||
}
|
||||
}
|
||||
|
||||
BuildBullet(pPlayerActor, nAmmoType, nHeight, nAngle,gottarg? &exhumedActors[target] : nullptr, var_1C);
|
||||
BuildBullet(pPlayerActor, nAmmoType, nHeight, nAngle, target, var_1C);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -33,10 +33,10 @@ enum {
|
|||
// 32 bytes
|
||||
struct PlayerInput
|
||||
{
|
||||
DExhumedActor* pTarget;
|
||||
int xVel;
|
||||
int yVel;
|
||||
uint16_t buttons;
|
||||
short nTarget;
|
||||
float nAngle;
|
||||
float pan;
|
||||
int8_t nItem;
|
||||
|
|
|
@ -177,7 +177,7 @@ void AIRa::Tick(RunListEvent* ev)
|
|||
|
||||
bool bVal = false;
|
||||
|
||||
Ra[nPlayer].pTarget = sPlayerInput[nPlayer].nTarget <= -1? nullptr : &exhumedActors[sPlayerInput[nPlayer].nTarget] ;
|
||||
Ra[nPlayer].pTarget = sPlayerInput[nPlayer].pTarget;
|
||||
pSprite->picnum = seq_GetSeqPicnum2(nSeq, Ra[nPlayer].nFrame);
|
||||
|
||||
if (Ra[nPlayer].nAction)
|
||||
|
|
|
@ -178,9 +178,9 @@ void BuildSnake(short nPlayer, short zVal)
|
|||
if (hitactor && hitactor->s().statnum >= 90 && hitactor->s().statnum <= 199) {
|
||||
pTarget = hitactor;
|
||||
}
|
||||
else if (sPlayerInput[nPlayer].nTarget >= 0)
|
||||
else if (sPlayerInput[nPlayer].pTarget != nullptr)
|
||||
{
|
||||
pTarget = &exhumedActors[sPlayerInput[nPlayer].nTarget];
|
||||
pTarget = sPlayerInput[nPlayer].pTarget;
|
||||
}
|
||||
|
||||
short nSnake = GrabSnake();
|
||||
|
|
|
@ -94,7 +94,7 @@ static void analyzesprites(spritetype* tsprite, int& spritesortcnt, int x, int y
|
|||
|
||||
spritetype *pPlayerSprite = &sprite[nPlayerSprite];
|
||||
|
||||
besttarget = -1;
|
||||
bestTarget = nullptr;
|
||||
|
||||
short nSector = pPlayerSprite->sectnum;
|
||||
|
||||
|
@ -107,7 +107,8 @@ static void analyzesprites(spritetype* tsprite, int& spritesortcnt, int x, int y
|
|||
for (nTSprite = spritesortcnt-1, pTSprite = &tsprite[nTSprite]; nTSprite >= 0; nTSprite--, pTSprite--)
|
||||
{
|
||||
int nSprite = pTSprite->owner;
|
||||
spritetype *pSprite = &sprite[nSprite];
|
||||
auto pActor = &exhumedActors[nSprite];
|
||||
spritetype *pSprite = &pActor->s();
|
||||
|
||||
if (pTSprite->sectnum >= 0)
|
||||
{
|
||||
|
@ -151,7 +152,7 @@ static void analyzesprites(spritetype* tsprite, int& spritesortcnt, int x, int y
|
|||
edx = (abs(edx) * 32) / ebx;
|
||||
if (ebx < 1000 && ebx < var_2C && edx < 10)
|
||||
{
|
||||
besttarget = nSprite;
|
||||
bestTarget = pActor;
|
||||
var_38 = edx;
|
||||
var_2C = ebx;
|
||||
}
|
||||
|
@ -162,21 +163,21 @@ static void analyzesprites(spritetype* tsprite, int& spritesortcnt, int x, int y
|
|||
{
|
||||
var_38 = edx;
|
||||
var_2C = ebx;
|
||||
besttarget = nSprite;
|
||||
bestTarget = pActor;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (besttarget != -1)
|
||||
if (bestTarget != nullptr)
|
||||
{
|
||||
spritetype *pTarget = &sprite[besttarget];
|
||||
spritetype *pTarget = &bestTarget->s();
|
||||
|
||||
nCreepyTimer = kCreepyCount;
|
||||
|
||||
if (!cansee(x, y, z, nSector, pTarget->x, pTarget->y, pTarget->z - GetSpriteHeight(besttarget), pTarget->sectnum))
|
||||
if (!cansee(x, y, z, nSector, pTarget->x, pTarget->y, pTarget->z - GetActorHeight(bestTarget), pTarget->sectnum))
|
||||
{
|
||||
besttarget = -1;
|
||||
bestTarget = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
BEGIN_PS_NS
|
||||
|
||||
extern short bSubTitles;
|
||||
extern short besttarget;
|
||||
extern DExhumedActor* bestTarget;
|
||||
extern bool bCamera;
|
||||
|
||||
void DrawStatusBar();
|
||||
|
|
Loading…
Reference in a new issue