mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-30 21:31:03 +00:00
- fixed broken jumping.
This was a nasty, but typical case for Duke where a variable did not contain what the name said and was carried along way too much code. Fixes #112
This commit is contained in:
parent
4b69a181c3
commit
f8c65839f0
2 changed files with 13 additions and 16 deletions
|
@ -1617,12 +1617,11 @@ static void operateJetpack(int snum, ESyncBits sb_snum, int psectlotag, int fz,
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
static void movement(int snum, ESyncBits sb_snum, int psect, int fz, int cz, int shrunk, int truefdist)
|
||||
static void movement(int snum, ESyncBits sb_snum, int psect, int fz, int cz, int shrunk, int truefdist, int psectlotag)
|
||||
{
|
||||
int j;
|
||||
auto p = &ps[snum];
|
||||
int pi = p->i;
|
||||
int psectlotag = sector[psect].lotag;
|
||||
|
||||
if (p->airleft != 15 * 26)
|
||||
p->airleft = 15 * 26; //Aprox twenty seconds.
|
||||
|
@ -1631,7 +1630,7 @@ static void movement(int snum, ESyncBits sb_snum, int psect, int fz, int cz, int
|
|||
p->scuba_on = 0;
|
||||
|
||||
int i = 40;
|
||||
if (psectlotag == 1 && p->spritebridge == 0)
|
||||
if (psectlotag == ST_1_ABOVE_WATER && p->spritebridge == 0)
|
||||
{
|
||||
if (shrunk == 0)
|
||||
{
|
||||
|
@ -1713,7 +1712,7 @@ static void movement(int snum, ESyncBits sb_snum, int psect, int fz, int cz, int
|
|||
p->falling_counter = 0;
|
||||
S_StopSound(-1, pi, CHAN_VOICE);
|
||||
|
||||
if (psectlotag != 1 && psectlotag != 2 && p->on_ground == 0 && p->poszv > (6144 >> 1))
|
||||
if (psectlotag != ST_1_ABOVE_WATER && psectlotag != ST_2_UNDERWATER && p->on_ground == 0 && p->poszv > (6144 >> 1))
|
||||
p->hard_landing = p->poszv >> 10;
|
||||
|
||||
p->on_ground = 1;
|
||||
|
@ -2761,7 +2760,7 @@ void processinput_d(int snum)
|
|||
}
|
||||
else if (psectlotag != ST_2_UNDERWATER)
|
||||
{
|
||||
movement(snum, sb_snum, psect, fz, cz, shrunk, truefdist);
|
||||
movement(snum, sb_snum, psect, fz, cz, shrunk, truefdist, psectlotag);
|
||||
}
|
||||
|
||||
p->psectlotag = psectlotag;
|
||||
|
@ -3079,7 +3078,7 @@ void processmove_d(int snum, ESyncBits sb_snum, int psect, int fz, int cz, int s
|
|||
}
|
||||
else if (psectlotag != 2)
|
||||
{
|
||||
movement(snum, sb_snum, psect, fz, cz, shrunk, truefdist);
|
||||
movement(snum, sb_snum, psect, fz, cz, shrunk, truefdist, psectlotag);
|
||||
}
|
||||
}
|
||||
END_DUKE_NS
|
||||
|
|
|
@ -2086,12 +2086,11 @@ static void onBoat(int snum, ESyncBits& sb_snum)
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
static void movement(int snum, ESyncBits sb_snum, int psect, int fz, int cz, int shrunk, int truefdist)
|
||||
static void movement(int snum, ESyncBits sb_snum, int psect, int fz, int cz, int shrunk, int truefdist, int psectlotag)
|
||||
{
|
||||
auto p = &ps[snum];
|
||||
auto pi = p->i;
|
||||
auto s = &sprite[pi];
|
||||
int psectlotag = sector[psect].lotag;
|
||||
|
||||
if (p->airleft != 15 * 26)
|
||||
p->airleft = 15 * 26; //Aprox twenty seconds.
|
||||
|
@ -2100,7 +2099,7 @@ static void movement(int snum, ESyncBits sb_snum, int psect, int fz, int cz, int
|
|||
p->scuba_on = 0;
|
||||
|
||||
int i = 40;
|
||||
if (psectlotag == 1 && p->spritebridge == 0)
|
||||
if (psectlotag == ST_1_ABOVE_WATER && p->spritebridge == 0)
|
||||
{
|
||||
if (shrunk == 0)
|
||||
{
|
||||
|
@ -2277,7 +2276,7 @@ static void movement(int snum, ESyncBits sb_snum, int psect, int fz, int cz, int
|
|||
|
||||
if (p->jumping_counter < 768)
|
||||
{
|
||||
if (psectlotag == 1 && p->jumping_counter > 768)
|
||||
if (psectlotag == ST_1_ABOVE_WATER && p->jumping_counter > 768)
|
||||
{
|
||||
p->jumping_counter = 0;
|
||||
p->poszv = -512;
|
||||
|
@ -3675,9 +3674,9 @@ void processinput_r(int snum)
|
|||
{
|
||||
underwater(snum, sb_snum, psect, fz, cz);
|
||||
}
|
||||
else if (psectlotag != ST_2_UNDERWATER)
|
||||
else
|
||||
{
|
||||
movement(snum, sb_snum, psect, fz, cz, shrunk, truefdist);
|
||||
movement(snum, sb_snum, psect, fz, cz, shrunk, truefdist, psectlotag);
|
||||
}
|
||||
|
||||
p->psectlotag = psectlotag;
|
||||
|
@ -4107,14 +4106,13 @@ void processmove_r(int snum, ESyncBits sb_snum, int psect, int fz, int cz, int s
|
|||
{
|
||||
int psectlotag = sector[psect].lotag;
|
||||
auto p = &ps[snum];
|
||||
if (psectlotag == 2)
|
||||
if (psectlotag == ST_2_UNDERWATER)
|
||||
{
|
||||
underwater(snum, sb_snum, psect, fz, cz);
|
||||
}
|
||||
|
||||
else if (psectlotag != 2)
|
||||
else
|
||||
{
|
||||
movement(snum, sb_snum, psect, fz, cz, shrunk, truefdist);
|
||||
movement(snum, sb_snum, psect, fz, cz, shrunk, truefdist, psectlotag);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue