mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-10 23:02:03 +00:00
- movefta and ifhitsectors.
This commit is contained in:
parent
861342a278
commit
7e8be10b04
6 changed files with 60 additions and 63 deletions
|
@ -705,26 +705,26 @@ void movefta_d(void)
|
|||
{
|
||||
int x, px, py, sx, sy;
|
||||
short p, psect, ssect;
|
||||
int i, j;
|
||||
int j;
|
||||
|
||||
StatIterator iti(STAT_ZOMBIEACTOR);
|
||||
DukeStatIterator iti(STAT_ZOMBIEACTOR);
|
||||
|
||||
while ((i = iti.NextIndex()) >= 0)
|
||||
while (auto act = iti.Next())
|
||||
{
|
||||
auto s = &sprite[i];
|
||||
auto ht = &hittype[i];
|
||||
p = findplayer(s, &x);
|
||||
auto s = &act->s;
|
||||
p = findplayer(act, &x);
|
||||
|
||||
ssect = psect = s->sectnum;
|
||||
|
||||
if (sprite[ps[p].i].extra > 0)
|
||||
auto pa = ps[p].GetActor();
|
||||
if (pa->s.extra > 0)
|
||||
{
|
||||
if (x < 30000)
|
||||
{
|
||||
ht->timetosleep++;
|
||||
if (ht->timetosleep >= (x >> 8))
|
||||
act->timetosleep++;
|
||||
if (act->timetosleep >= (x >> 8))
|
||||
{
|
||||
if (badguy(s))
|
||||
if (badguy(act))
|
||||
{
|
||||
px = ps[p].oposx + 64 - (krand() & 127);
|
||||
py = ps[p].oposy + 64 - (krand() & 127);
|
||||
|
@ -773,20 +773,20 @@ void movefta_d(void)
|
|||
s->shade = sector[s->sectnum].ceilingshade;
|
||||
else s->shade = sector[s->sectnum].floorshade;
|
||||
|
||||
ht->timetosleep = 0;
|
||||
changespritestat(i, STAT_STANDABLE);
|
||||
act->timetosleep = 0;
|
||||
changespritestat(act, STAT_STANDABLE);
|
||||
break;
|
||||
|
||||
default:
|
||||
ht->timetosleep = 0;
|
||||
check_fta_sounds_d(&hittype[i]);
|
||||
changespritestat(i, STAT_ACTOR);
|
||||
act->timetosleep = 0;
|
||||
check_fta_sounds_d(act);
|
||||
changespritestat(act, STAT_ACTOR);
|
||||
break;
|
||||
}
|
||||
else ht->timetosleep = 0;
|
||||
else act->timetosleep = 0;
|
||||
}
|
||||
}
|
||||
if (badguy(s))
|
||||
if (badguy(act))
|
||||
{
|
||||
if (sector[s->sectnum].ceilingstat & 1)
|
||||
s->shade = sector[s->sectnum].ceilingshade;
|
||||
|
@ -802,17 +802,15 @@ void movefta_d(void)
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
int ifhitsectors_d(int sectnum)
|
||||
DDukeActor* ifhitsectors_d(int sectnum)
|
||||
{
|
||||
StatIterator it(STAT_MISC);
|
||||
int i;
|
||||
while((i = it.NextIndex()) >= 0)
|
||||
DukeStatIterator it(STAT_MISC);
|
||||
while (auto a1 = it.Next())
|
||||
{
|
||||
auto s = &sprite[i];
|
||||
if (s->picnum == EXPLOSION2 && sectnum == s->sectnum)
|
||||
return i;
|
||||
if (a1->s.picnum == EXPLOSION2 && sectnum == a1->s.sectnum)
|
||||
return a1;
|
||||
}
|
||||
return -1;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
|
@ -522,31 +522,29 @@ void guts_r(DDukeActor* actor, short gtype, short n, short p)
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
void movefta_r(void)
|
||||
{
|
||||
int x, px, py, sx, sy;
|
||||
short j, p, psect, ssect;
|
||||
spritetype* s;
|
||||
|
||||
|
||||
StatIterator it(STAT_ZOMBIEACTOR);
|
||||
int i;
|
||||
while((i = it.NextIndex()) >= 0)
|
||||
DukeStatIterator it(STAT_ZOMBIEACTOR);
|
||||
while(auto act = it.Next())
|
||||
{
|
||||
s = &sprite[i];
|
||||
p = findplayer(s, &x);
|
||||
auto s = &act->s;
|
||||
p = findplayer(act, &x);
|
||||
j = 0;
|
||||
|
||||
ssect = psect = s->sectnum;
|
||||
|
||||
if (sprite[ps[p].i].extra > 0)
|
||||
if (ps[p].GetActor()->s.extra > 0)
|
||||
{
|
||||
if (x < 30000)
|
||||
{
|
||||
hittype[i].timetosleep++;
|
||||
if (hittype[i].timetosleep >= (x >> 8))
|
||||
act->timetosleep++;
|
||||
if (act->timetosleep >= (x >> 8))
|
||||
{
|
||||
if (badguy(s))
|
||||
if (badguy(act))
|
||||
{
|
||||
px = ps[p].oposx + 64 - (krand() & 127);
|
||||
py = ps[p].oposy + 64 - (krand() & 127);
|
||||
|
@ -598,23 +596,23 @@ void movefta_r(void)
|
|||
s->shade = sector[s->sectnum].ceilingshade;
|
||||
else s->shade = sector[s->sectnum].floorshade;
|
||||
|
||||
hittype[i].timetosleep = 0;
|
||||
changespritestat(i, STAT_STANDABLE);
|
||||
act->timetosleep = 0;
|
||||
changespritestat(act, STAT_STANDABLE);
|
||||
break;
|
||||
default:
|
||||
#if 0
|
||||
// TRANSITIONAL: RedNukem has this here. Needed?
|
||||
if (actorflag(spriteNum, SFLAG_USEACTIVATOR) && sector[sprite[spriteNum].sectnum].lotag & 16384) break;
|
||||
if (actorflag(spriteNum, SFLAG_USEACTIVATOR) && sector[s prite[spriteNum].sectnum].lotag & 16384) break;
|
||||
#endif
|
||||
hittype[i].timetosleep = 0;
|
||||
check_fta_sounds_r(&hittype[i]);
|
||||
changespritestat(i, STAT_ACTOR);
|
||||
act->timetosleep = 0;
|
||||
check_fta_sounds_r(act);
|
||||
changespritestat(act, STAT_ACTOR);
|
||||
break;
|
||||
}
|
||||
else hittype[i].timetosleep = 0;
|
||||
else act->timetosleep = 0;
|
||||
}
|
||||
}
|
||||
if (/*!j &&*/ badguy(s)) // this is like RedneckGDX. j is uninitialized here, i.e. most likely not 0.
|
||||
if (/*!j &&*/ badguy(act)) // this is like RedneckGDX. j is uninitialized here, i.e. most likely not 0.
|
||||
{
|
||||
if (sector[s->sectnum].ceilingstat & 1)
|
||||
s->shade = sector[s->sectnum].ceilingshade;
|
||||
|
@ -622,11 +620,11 @@ void movefta_r(void)
|
|||
|
||||
if (s->picnum != HEN || s->picnum != COW || s->picnum != PIG || s->picnum != DOGRUN || ((isRRRA()) && s->picnum != RABBIT))
|
||||
{
|
||||
if (wakeup(i, p))
|
||||
if (wakeup(act, p))
|
||||
{
|
||||
hittype[i].timetosleep = 0;
|
||||
check_fta_sounds_r(&hittype[i]);
|
||||
changespritestat(i, STAT_ACTOR);
|
||||
act->timetosleep = 0;
|
||||
check_fta_sounds_r(act);
|
||||
changespritestat(act, STAT_ACTOR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -640,16 +638,15 @@ void movefta_r(void)
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
int ifhitsectors_r(int sectnum)
|
||||
DDukeActor* ifhitsectors_r(int sectnum)
|
||||
{
|
||||
StatIterator it(STAT_MISC);
|
||||
int i;
|
||||
while ((i = it.NextIndex()) >= 0)
|
||||
DukeStatIterator it(STAT_MISC);
|
||||
while (auto a1 = it.Next())
|
||||
{
|
||||
if (sprite[i].picnum == EXPLOSION2 || (sprite[i].picnum == EXPLOSION3 && sectnum == sprite[i].sectnum))
|
||||
return i;
|
||||
if (a1->s.picnum == EXPLOSION2 || (a1->s.picnum == EXPLOSION3 && sectnum == a1->s.sectnum))
|
||||
return a1;
|
||||
}
|
||||
return -1;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
|
@ -72,8 +72,8 @@ void lotsofpaper_d(DDukeActor* s, short n);
|
|||
void lotsoffeathers_r(DDukeActor* s, short n);
|
||||
void guts_d(DDukeActor* s, short gtype, short n, short p);
|
||||
void guts_r(DDukeActor* s, short gtype, short n, short p);
|
||||
int ifhitsectors_d(int sectnum);
|
||||
int ifhitsectors_r(int sectnum);
|
||||
DDukeActor* ifhitsectors_d(int sectnum);
|
||||
DDukeActor* ifhitsectors_r(int sectnum);
|
||||
int ifhitbyweapon_r(DDukeActor* sn);
|
||||
int ifhitbyweapon_d(DDukeActor* sn);
|
||||
void fall_d(int g_i, int g_p);
|
||||
|
|
|
@ -93,7 +93,7 @@ struct Dispatcher
|
|||
void (*lotsofmail)(DDukeActor *s, short n);
|
||||
void (*lotsofpaper)(DDukeActor *s, short n);
|
||||
void (*guts)(DDukeActor* s, short gtype, short n, short p);
|
||||
int (*ifhitsectors)(int sectnum);
|
||||
DDukeActor* (*ifhitsectors)(int sectnum);
|
||||
int (*ifhitbyweapon)(DDukeActor* sectnum);
|
||||
void (*fall)(int g_i, int g_p);
|
||||
bool (*spawnweapondebris)(int picnum, int dnum);
|
||||
|
|
|
@ -108,7 +108,7 @@ void addammo(int weapon, struct player_struct* p, int amount);
|
|||
|
||||
int ssp(DDukeActor* i, unsigned int cliptype); //The set sprite function
|
||||
void insertspriteq(DDukeActor *i);
|
||||
int wakeup(int sn, int pn);
|
||||
int wakeup(DDukeActor* sn, int pn);
|
||||
|
||||
|
||||
int timedexit(int snum);
|
||||
|
|
|
@ -26,6 +26,7 @@ Prepared for public release: 03/21/2003 - Charlie Wiederhold, 3D Realms
|
|||
//-------------------------------------------------------------------------
|
||||
#include "ns.h"
|
||||
#include "duke3d.h"
|
||||
#include "dukeactor.h"
|
||||
|
||||
BEGIN_DUKE_NS
|
||||
|
||||
|
@ -39,20 +40,21 @@ int madenoise(int snum)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int wakeup(int i, int snum)
|
||||
int wakeup(DDukeActor* ac, int snum)
|
||||
{
|
||||
player_struct *p;
|
||||
int radius;
|
||||
p = &ps[snum];
|
||||
auto spr = &ac->s;
|
||||
if (!p->donoise)
|
||||
return 0;
|
||||
if (sprite[i].pal == 30 || sprite[i].pal == 32 || sprite[i].pal == 33 || (isRRRA() && sprite[i].pal == 8))
|
||||
if (spr->pal == 30 || spr->pal == 32 || spr->pal == 33 || (isRRRA() && spr->pal == 8))
|
||||
return 0;
|
||||
|
||||
radius = p->noise_radius;
|
||||
|
||||
if (p->noise_x - radius < sprite[i].x && p->noise_x + radius > sprite[i].x
|
||||
&& p->noise_y - radius < sprite[i].y && p->noise_y + radius > sprite[i].y)
|
||||
if (p->noise_x - radius < spr->x && p->noise_x + radius > spr->x
|
||||
&& p->noise_y - radius < spr->y && p->noise_y + radius > spr->y)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue