Merge branch 'floatcvt' of https://github.com/rheit/zdoom into floatcvt

# Conflicts:
#	src/CMakeLists.txt
#	src/actor.h
This commit is contained in:
Christoph Oelckers 2016-03-21 01:34:39 +01:00
commit 48afdd7dcb
206 changed files with 8724 additions and 4719 deletions

View file

@ -86,7 +86,8 @@ int LS_SetGlobalFogParameter(line_t *ln, AActor *it, bool backSide, int arg0, in
#define SPEED(a) ((a)*(FRACUNIT/8))
#define TICS(a) (((a)*TICRATE)/35)
#define OCTICS(a) (((a)*TICRATE)/8)
#define BYTEANGLE(a) ((angle_t)((a)<<24))
#define _f_BYTEANGLE(a) ((angle_t)((a)<<24))
#define BYTEANGLE(a) ((a) * (360./256.))
#define CRUSH(a) ((a) > 0? (a) : -1)
#define CRUSHTYPE(a) ((a)==1? false : (a)==2? true : gameinfo.gametype == GAME_Hexen)
#define CHANGE(a) (((a) >= 0 && (a)<=7)? ChangeMap[a]:0)
@ -150,13 +151,13 @@ FUNC(LS_Polyobj_RotateRight)
FUNC(LS_Polyobj_Move)
// Polyobj_Move (po, speed, angle, distance)
{
return EV_MovePoly (ln, arg0, SPEED(arg1), BYTEANGLE(arg2), arg3 * FRACUNIT, false);
return EV_MovePoly (ln, arg0, SPEED(arg1), _f_BYTEANGLE(arg2), arg3 * FRACUNIT, false);
}
FUNC(LS_Polyobj_MoveTimes8)
// Polyobj_MoveTimes8 (po, speed, angle, distance)
{
return EV_MovePoly (ln, arg0, SPEED(arg1), BYTEANGLE(arg2), arg3 * FRACUNIT * 8, false);
return EV_MovePoly (ln, arg0, SPEED(arg1), _f_BYTEANGLE(arg2), arg3 * FRACUNIT * 8, false);
}
FUNC(LS_Polyobj_MoveTo)
@ -171,19 +172,19 @@ FUNC(LS_Polyobj_MoveToSpot)
FActorIterator iterator (arg2);
AActor *spot = iterator.Next();
if (spot == NULL) return false;
return EV_MovePolyTo (ln, arg0, SPEED(arg1), spot->X(), spot->Y(), false);
return EV_MovePolyTo (ln, arg0, SPEED(arg1), spot->_f_X(), spot->_f_Y(), false);
}
FUNC(LS_Polyobj_DoorSwing)
// Polyobj_DoorSwing (po, speed, angle, delay)
{
return EV_OpenPolyDoor (ln, arg0, arg1, BYTEANGLE(arg2), arg3, 0, PODOOR_SWING);
return EV_OpenPolyDoor (ln, arg0, arg1, _f_BYTEANGLE(arg2), arg3, 0, PODOOR_SWING);
}
FUNC(LS_Polyobj_DoorSlide)
// Polyobj_DoorSlide (po, speed, angle, distance, delay)
{
return EV_OpenPolyDoor (ln, arg0, SPEED(arg1), BYTEANGLE(arg2), arg4, arg3*FRACUNIT, PODOOR_SLIDE);
return EV_OpenPolyDoor (ln, arg0, SPEED(arg1), _f_BYTEANGLE(arg2), arg4, arg3*FRACUNIT, PODOOR_SLIDE);
}
FUNC(LS_Polyobj_OR_RotateLeft)
@ -201,13 +202,13 @@ FUNC(LS_Polyobj_OR_RotateRight)
FUNC(LS_Polyobj_OR_Move)
// Polyobj_OR_Move (po, speed, angle, distance)
{
return EV_MovePoly (ln, arg0, SPEED(arg1), BYTEANGLE(arg2), arg3 * FRACUNIT, true);
return EV_MovePoly (ln, arg0, SPEED(arg1), _f_BYTEANGLE(arg2), arg3 * FRACUNIT, true);
}
FUNC(LS_Polyobj_OR_MoveTimes8)
// Polyobj_OR_MoveTimes8 (po, speed, angle, distance)
{
return EV_MovePoly (ln, arg0, SPEED(arg1), BYTEANGLE(arg2), arg3 * FRACUNIT * 8, true);
return EV_MovePoly (ln, arg0, SPEED(arg1), _f_BYTEANGLE(arg2), arg3 * FRACUNIT * 8, true);
}
FUNC(LS_Polyobj_OR_MoveTo)
@ -222,7 +223,7 @@ FUNC(LS_Polyobj_OR_MoveToSpot)
FActorIterator iterator (arg2);
AActor *spot = iterator.Next();
if (spot == NULL) return false;
return EV_MovePolyTo (ln, arg0, SPEED(arg1), spot->X(), spot->Y(), true);
return EV_MovePolyTo (ln, arg0, SPEED(arg1), spot->_f_X(), spot->_f_Y(), true);
}
FUNC(LS_Polyobj_Stop)
@ -1104,7 +1105,16 @@ FUNC(LS_Teleport_Line)
return EV_SilentLineTeleport (ln, backSide, it, arg1, arg2);
}
static void ThrustThingHelper (AActor *it, angle_t angle, int force, INTBOOL nolimit);
static void ThrustThingHelper(AActor *it, DAngle angle, double force, INTBOOL nolimit)
{
it->VelFromAngle(angle, force);
if (!nolimit)
{
it->Vel.X = clamp(it->Vel.X, -MAXMOVE, MAXMOVE);
it->Vel.Y = clamp(it->Vel.Y, -MAXMOVE, MAXMOVE);
}
}
FUNC(LS_ThrustThing)
// ThrustThing (angle, force, nolimit, tid)
{
@ -1129,23 +1139,11 @@ FUNC(LS_ThrustThing)
return false;
}
static void ThrustThingHelper (AActor *it, angle_t angle, int force, INTBOOL nolimit)
{
angle >>= ANGLETOFINESHIFT;
it->vel.x += force * finecosine[angle];
it->vel.y += force * finesine[angle];
if (!nolimit)
{
it->vel.x = clamp<fixed_t> (it->vel.x, -MAXMOVE, MAXMOVE);
it->vel.y = clamp<fixed_t> (it->vel.y, -MAXMOVE, MAXMOVE);
}
}
FUNC(LS_ThrustThingZ) // [BC]
// ThrustThingZ (tid, zthrust, down/up, set)
{
AActor *victim;
fixed_t thrust = arg1*FRACUNIT/4;
double thrust = arg1/4.;
// [BC] Up is default
if (arg2)
@ -1158,18 +1156,18 @@ FUNC(LS_ThrustThingZ) // [BC]
while ( (victim = iterator.Next ()) )
{
if (!arg3)
victim->vel.z = thrust;
victim->Vel.Z = thrust;
else
victim->vel.z += thrust;
victim->Vel.Z += thrust;
}
return true;
}
else if (it)
{
if (!arg3)
it->vel.z = thrust;
it->Vel.Z = thrust;
else
it->vel.z += thrust;
it->Vel.Z += thrust;
return true;
}
return false;
@ -1640,13 +1638,13 @@ FUNC(LS_Thing_Hate)
FUNC(LS_Thing_ProjectileAimed)
// Thing_ProjectileAimed (tid, type, speed, target, newtid)
{
return P_Thing_Projectile (arg0, it, arg1, NULL, 0, arg2<<(FRACBITS-3), 0, arg3, it, 0, arg4, false);
return P_Thing_Projectile (arg0, it, arg1, NULL, 0., arg2<<(FRACBITS-3), 0, arg3, it, 0, arg4, false);
}
FUNC(LS_Thing_ProjectileIntercept)
// Thing_ProjectileIntercept (tid, type, speed, target, newtid)
{
return P_Thing_Projectile (arg0, it, arg1, NULL, 0, arg2<<(FRACBITS-3), 0, arg3, it, 0, arg4, true);
return P_Thing_Projectile (arg0, it, arg1, NULL, 0., arg2<<(FRACBITS-3), 0, arg3, it, 0, arg4, true);
}
// [BC] added newtid for next two
@ -1665,7 +1663,7 @@ FUNC(LS_Thing_SpawnNoFog)
FUNC(LS_Thing_SpawnFacing)
// Thing_SpawnFacing (tid, type, nofog, newtid)
{
return P_Thing_Spawn (arg0, it, arg1, ANGLE_MAX, arg2 ? false : true, arg3);
return P_Thing_Spawn (arg0, it, arg1, 1000000., arg2 ? false : true, arg3);
}
FUNC(LS_Thing_Raise)
@ -1700,8 +1698,8 @@ FUNC(LS_Thing_Stop)
{
if (it != NULL)
{
it->vel.x = it->vel.y = it->vel.z = 0;
if (it->player != NULL) it->player->vel.x = it->player->vel.y = 0;
it->Vel.Zero();
if (it->player != NULL) it->player->Vel.Zero();
ok = true;
}
}
@ -1711,8 +1709,8 @@ FUNC(LS_Thing_Stop)
while ( (target = iterator.Next ()) )
{
target->vel.x = target->vel.y = target->vel.z = 0;
if (target->player != NULL) target->player->vel.x = target->player->vel.y = 0;
target->Vel.Zero();
if (target->player != NULL) target->player->Vel.Zero();
ok = true;
}
}
@ -2470,11 +2468,11 @@ FUNC(LS_Sector_SetDamage)
FUNC(LS_Sector_SetGravity)
// Sector_SetGravity (tag, intpart, fracpart)
{
float gravity;
double gravity;
if (arg2 > 99)
arg2 = 99;
gravity = (float)arg1 + (float)arg2 * 0.01f;
gravity = (double)arg1 + (double)arg2 * 0.01;
FSectorTagIterator itr(arg0);
int secnum;
@ -3221,7 +3219,7 @@ FUNC(LS_ForceField)
if (it != NULL)
{
P_DamageMobj (it, NULL, NULL, 16, NAME_None);
P_ThrustMobj (it, it->angle + ANGLE_180, 0x7D000);
it->Thrust(it->Angles.Yaw + 180, 7.8125);
}
return true;
}
@ -3276,8 +3274,6 @@ FUNC(LS_GlassBreak)
{ // Break some glass
fixed_t x, y;
AActor *glass;
angle_t an;
int speed;
x = ln->v1->x + ln->dx/2;
y = ln->v1->y + ln->dy/2;
@ -3288,15 +3284,12 @@ FUNC(LS_GlassBreak)
{
glass = Spawn("GlassJunk", x, y, ONFLOORZ, ALLOW_REPLACE);
glass->AddZ(24 * FRACUNIT);
glass->_f_AddZ(24 * FRACUNIT);
glass->SetState (glass->SpawnState + (pr_glass() % glass->health));
an = pr_glass() << (32-8);
glass->angle = an;
an >>= ANGLETOFINESHIFT;
speed = pr_glass() & 3;
glass->vel.x = finecosine[an] * speed;
glass->vel.y = finesine[an] * speed;
glass->vel.z = (pr_glass() & 7) << FRACBITS;
glass->Angles.Yaw = pr_glass() * (360 / 256.);
glass->VelFromAngle(pr_glass() & 3);
glass->Vel.Z = (pr_glass() & 7);
// [RH] Let the shards stick around longer than they did in Strife.
glass->tics += pr_glass();
}