mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-21 19:11:06 +00:00
- nnExtSpawnDude
This commit is contained in:
parent
5ee7505d11
commit
6846b50a21
1 changed files with 23 additions and 15 deletions
|
@ -255,27 +255,35 @@ CONDITION_TYPE_NAMES gCondTypeNames[7] = {
|
||||||
// for actor.cpp
|
// for actor.cpp
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
spritetype* nnExtSpawnDude(XSPRITE* pXSource, spritetype* pSprite, short nType, int a3, int a4)
|
//---------------------------------------------------------------------------
|
||||||
{
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
static DBloodActor* nnExtSpawnDude(DBloodActor* sourceActor, DBloodActor* origin, short nType, int a3, int a4)
|
||||||
|
{
|
||||||
DBloodActor* pDudeActor = nullptr;
|
DBloodActor* pDudeActor = nullptr;
|
||||||
spritetype* pSource = &sprite[pXSource->reference];
|
auto pSource = &sourceActor->s();
|
||||||
if (nType < kDudeBase || nType >= kDudeMax || (pDudeActor = actSpawnSprite(&bloodActors[pSprite->index], kStatDude)) == NULL)
|
auto pXSource = &sourceActor->x();
|
||||||
|
auto pOrigin = &origin->s();
|
||||||
|
|
||||||
|
if (nType < kDudeBase || nType >= kDudeMax || (pDudeActor = actSpawnSprite(origin, kStatDude)) == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
spritetype* pDude = &pDudeActor->s();
|
spritetype* pDude = &pDudeActor->s();
|
||||||
XSPRITE* pXDude = &pDudeActor->x();
|
XSPRITE* pXDude = &pDudeActor->x();
|
||||||
|
|
||||||
int angle = pSprite->ang;
|
int angle = pOrigin->ang;
|
||||||
int x, y, z = a4 + pSprite->z;
|
int x, y, z = a4 + pOrigin->z;
|
||||||
if (a3 < 0)
|
if (a3 < 0)
|
||||||
{
|
{
|
||||||
x = pSprite->x;
|
x = pOrigin->x;
|
||||||
y = pSprite->y;
|
y = pOrigin->y;
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
x = pSprite->x + mulscale30r(Cos(angle), a3);
|
x = pOrigin->x + mulscale30r(Cos(angle), a3);
|
||||||
y = pSprite->y + mulscale30r(Sin(angle), a3);
|
y = pOrigin->y + mulscale30r(Sin(angle), a3);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec3_t pos = { x, y, z };
|
vec3_t pos = { x, y, z };
|
||||||
|
@ -331,7 +339,7 @@ spritetype* nnExtSpawnDude(XSPRITE* pXSource, spritetype* pSprite, short nType,
|
||||||
if ((burning || (pSource->flags & kModernTypeFlag3)) && !pXDude->dudeFlag4)
|
if ((burning || (pSource->flags & kModernTypeFlag3)) && !pXDude->dudeFlag4)
|
||||||
aiActivateDude(pDudeActor);
|
aiActivateDude(pDudeActor);
|
||||||
|
|
||||||
return pDude;
|
return pDudeActor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -967,12 +975,12 @@ spritetype* randomDropPickupObject(spritetype* pSource, short prevItem)
|
||||||
// this function spawns random dude using dudeSpawn
|
// this function spawns random dude using dudeSpawn
|
||||||
spritetype* randomSpawnDude(XSPRITE* pXSource, spritetype* pSprite, int a3, int a4)
|
spritetype* randomSpawnDude(XSPRITE* pXSource, spritetype* pSprite, int a3, int a4)
|
||||||
{
|
{
|
||||||
spritetype* pSprite2 = NULL; int selected = -1;
|
DBloodActor* pSprite2 = NULL; int selected = -1;
|
||||||
|
|
||||||
if ((selected = randomGetDataValue(pXSource, kRandomizeDude)) > 0)
|
if ((selected = randomGetDataValue(pXSource, kRandomizeDude)) > 0)
|
||||||
pSprite2 = nnExtSpawnDude(pXSource, pSprite, selected, a3, 0);
|
pSprite2 = nnExtSpawnDude(&bloodActors[pXSource->reference], &bloodActors[pSprite->index], selected, a3, 0);
|
||||||
|
|
||||||
return pSprite2;
|
return pSprite2? &pSprite2->s() : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------
|
//-------------------------
|
||||||
|
@ -4782,7 +4790,7 @@ void useCustomDudeSpawn(DBloodActor* pSource, DBloodActor* pSprite)
|
||||||
void useDudeSpawn(XSPRITE* pXSource, spritetype* pSprite) {
|
void useDudeSpawn(XSPRITE* pXSource, spritetype* pSprite) {
|
||||||
|
|
||||||
if (randomSpawnDude(pXSource, pSprite, pSprite->clipdist << 1, 0) == NULL)
|
if (randomSpawnDude(pXSource, pSprite, pSprite->clipdist << 1, 0) == NULL)
|
||||||
nnExtSpawnDude(pXSource, pSprite, pXSource->data1, pSprite->clipdist << 1, 0);
|
nnExtSpawnDude(&bloodActors[pXSource->reference], &bloodActors[pSprite->index], pXSource->data1, pSprite->clipdist << 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool modernTypeOperateSprite(int nSprite, spritetype* pSprite, XSPRITE* pXSprite, EVENT event) {
|
bool modernTypeOperateSprite(int nSprite, spritetype* pSprite, XSPRITE* pXSprite, EVENT event) {
|
||||||
|
|
Loading…
Reference in a new issue