mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-10 23:02:03 +00:00
- dodge, furthestcanseepoint, furthestangle.
This commit is contained in:
parent
4e675ea322
commit
31e5023004
7 changed files with 25 additions and 24 deletions
|
@ -5082,20 +5082,20 @@ void makeitfall(DDukeActor* actor)
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
int dodge(spritetype* s)
|
||||
int dodge(DDukeActor* actor)
|
||||
{
|
||||
int i;
|
||||
auto s = &actor->s;
|
||||
int bx, by, mx, my, bxvect, byvect, mxvect, myvect, d;
|
||||
|
||||
mx = s->x;
|
||||
my = s->y;
|
||||
mxvect = sintable[(s->ang + 512) & 2047]; myvect = sintable[s->ang & 2047];
|
||||
|
||||
StatIterator it(STAT_PROJECTILE);
|
||||
while ((i = it.NextIndex()) >= 0)
|
||||
DukeStatIterator it(STAT_PROJECTILE);
|
||||
while (auto ac = it.Next())
|
||||
{
|
||||
auto si = &sprite[i];
|
||||
if (si->owner == i || si->sectnum != s->sectnum)
|
||||
auto si = &ac->s;
|
||||
if (ac->GetOwner() == ac || si->sectnum != s->sectnum)
|
||||
continue;
|
||||
|
||||
bx = si->x - mx;
|
||||
|
@ -5122,17 +5122,17 @@ int dodge(spritetype* s)
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
int furthestangle(int i, int angs)
|
||||
int furthestangle(DDukeActor *actor, int angs)
|
||||
{
|
||||
auto s = &actor->s;
|
||||
short j, hitsect, hitwall, hitspr, furthest_angle, angincs;
|
||||
int hx, hy, hz, d, greatestd;
|
||||
spritetype* s = &sprite[i];
|
||||
|
||||
greatestd = -(1 << 30);
|
||||
angincs = 2048 / angs;
|
||||
|
||||
if (s->picnum != TILE_APLAYER)
|
||||
if ((hittype[i].temp_data[0] & 63) > 2) return(s->ang + 1024);
|
||||
if ((actor->temp_data[0] & 63) > 2) return(s->ang + 1024);
|
||||
|
||||
for (j = s->ang; j < (2048 + s->ang); j += angincs)
|
||||
{
|
||||
|
@ -5158,18 +5158,19 @@ int furthestangle(int i, int angs)
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
int furthestcanseepoint(int i, spritetype* ts, int* dax, int* day)
|
||||
int furthestcanseepoint(DDukeActor *actor, DDukeActor* tosee, int* dax, int* day)
|
||||
{
|
||||
auto s = &actor->s;
|
||||
short j, hitsect, hitwall, hitspr, angincs;
|
||||
int hx, hy, hz, d, da;//, d, cd, ca,tempx,tempy,cx,cy;
|
||||
spritetype* s = &sprite[i];
|
||||
|
||||
if ((hittype[i].temp_data[0] & 63)) return -1;
|
||||
if ((actor->temp_data[0] & 63)) return -1;
|
||||
|
||||
if (ud.multimode < 2 && ud.player_skill < 3)
|
||||
angincs = 2048 / 2;
|
||||
else angincs = 2048 / (1 + (krand() & 1));
|
||||
|
||||
auto ts = &tosee->s;
|
||||
for (j = ts->ang; j < (2048 + ts->ang); j += (angincs - (krand() & 511)))
|
||||
{
|
||||
hitscan(ts->x, ts->y, ts->z - (16 << 8), ts->sectnum,
|
||||
|
@ -5258,14 +5259,14 @@ void alterang(int a, int g_i, int g_p)
|
|||
j = 2;
|
||||
if (a & furthestdir)
|
||||
{
|
||||
goalang = furthestangle(g_i, j);
|
||||
goalang = furthestangle(&hittype[g_i], j);
|
||||
g_sp->ang = goalang;
|
||||
g_sp->owner = ps[g_p].i;
|
||||
}
|
||||
|
||||
if (a & fleeenemy)
|
||||
{
|
||||
goalang = furthestangle(g_i, j);
|
||||
goalang = furthestangle(&hittype[g_i], j);
|
||||
g_sp->ang = goalang; // += angdif; // = getincangle(aang,goalang)>>1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3915,7 +3915,7 @@ void move_d(int g_i, int g_p, int g_x)
|
|||
if (a & getv) g_sp->zvel += ((*(moveptr + 1) << 4) - g_sp->zvel) >> 1;
|
||||
|
||||
if (a & dodgebullet)
|
||||
dodge(g_sp);
|
||||
dodge(&hittype[g_i]);
|
||||
|
||||
if (g_sp->picnum != APLAYER)
|
||||
alterang(a, g_i, g_p);
|
||||
|
|
|
@ -3905,7 +3905,7 @@ void move_r(int g_i, int g_p, int g_x)
|
|||
if (a & getv) g_sp->zvel += ((*(moveptr + 1) << 4) - g_sp->zvel) >> 1;
|
||||
|
||||
if (a & dodgebullet)
|
||||
dodge(g_sp);
|
||||
dodge(&hittype[g_i]);
|
||||
|
||||
if (g_sp->picnum != APLAYER)
|
||||
alterang(a, g_i, g_p);
|
||||
|
|
|
@ -96,7 +96,7 @@ void handle_se130(DDukeActor* i, int countmax, int EXPLOSION2);
|
|||
|
||||
void respawn_rrra(DDukeActor* oldact, DDukeActor* newact);
|
||||
|
||||
int dodge(spritetype*);
|
||||
int dodge(DDukeActor*);
|
||||
void alterang(int a, int g_i, int g_p);
|
||||
void fall_common(int g_i, int g_p, int JIBS6, int DRONE, int BLOODPOOL, int SHOTSPARK1, int squished, int thud, int(*fallspecial)(int, int), void (*falladjustz)(spritetype*));
|
||||
void checkavailweapon(struct player_struct* p);
|
||||
|
@ -171,7 +171,7 @@ void doorders(const CompletionFunc& func);
|
|||
void LoadActor(int i, int p, int x);
|
||||
void execute(int s, int p, int d);
|
||||
void makeitfall(DDukeActor* s);
|
||||
int furthestangle(int snum, int angDiv);
|
||||
int furthestangle(DDukeActor* snum, int angDiv);
|
||||
void getglobalz(DDukeActor* s);
|
||||
void OnEvent(int id, int pnum = -1, int snum = -1, int dist = -1);
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ struct ParseState
|
|||
void parseifelse(int condition);
|
||||
};
|
||||
|
||||
int furthestcanseepoint(int i, spritetype* ts, int* dax, int* day);
|
||||
int furthestcanseepoint(DDukeActor* i, DDukeActor* ts, int* dax, int* day);
|
||||
bool ifsquished(int i, int p);
|
||||
void fakebubbaspawn(int g_i, int g_p);
|
||||
void tearitup(int sect);
|
||||
|
@ -1493,7 +1493,7 @@ static bool ifcansee(int g_i, int g_p)
|
|||
|
||||
// also modifies 'target' x&y if found..
|
||||
|
||||
j = furthestcanseepoint(g_i, s, &hittype[g_i].lastvx, &hittype[g_i].lastvy);
|
||||
j = furthestcanseepoint(&hittype[g_i], ps[g_p].GetActor(), &hittype[g_i].lastvx, &hittype[g_i].lastvy);
|
||||
|
||||
if (j == -1) j = 0;
|
||||
else j = 1;
|
||||
|
@ -2542,7 +2542,7 @@ int ParseState::parse(void)
|
|||
break;
|
||||
|
||||
case concmd_ifbulletnear:
|
||||
parseifelse( dodge(g_sp) == 1);
|
||||
parseifelse( dodge(g_ac) == 1);
|
||||
break;
|
||||
case concmd_ifrespawn:
|
||||
if( badguy(g_sp) )
|
||||
|
|
|
@ -3079,7 +3079,7 @@ HORIZONLY:
|
|||
changespritesect(pi, p->cursectnum);
|
||||
|
||||
if (ud.clipping == 0)
|
||||
j = (pushmove(&p->posx, &p->posy, &p->posz, &p->cursectnum, 164L, (4L << 8), (4L << 8), CLIPMASK0) < 0 && furthestangle(pi, 8) < 512);
|
||||
j = (pushmove(&p->posx, &p->posy, &p->posz, &p->cursectnum, 164L, (4L << 8), (4L << 8), CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < 512);
|
||||
else j = 0;
|
||||
|
||||
if (ud.clipping == 0)
|
||||
|
|
|
@ -4060,9 +4060,9 @@ HORIZONLY:
|
|||
if (ud.clipping == 0)
|
||||
{
|
||||
if (s->clipdist == 64)
|
||||
j = (pushmove(&p->posx, &p->posy, &p->posz, &p->cursectnum, 128L, (4L << 8), (4L << 8), CLIPMASK0) < 0 && furthestangle(pi, 8) < 512);
|
||||
j = (pushmove(&p->posx, &p->posy, &p->posz, &p->cursectnum, 128L, (4L << 8), (4L << 8), CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < 512);
|
||||
else
|
||||
j = (pushmove(&p->posx, &p->posy, &p->posz, &p->cursectnum, 16L, (4L << 8), (4L << 8), CLIPMASK0) < 0 && furthestangle(pi, 8) < 512);
|
||||
j = (pushmove(&p->posx, &p->posy, &p->posz, &p->cursectnum, 16L, (4L << 8), (4L << 8), CLIPMASK0) < 0 && furthestangle(p->GetActor(), 8) < 512);
|
||||
}
|
||||
else j = 0;
|
||||
|
||||
|
|
Loading…
Reference in a new issue