mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-10 07:12:07 +00:00
OK, nun funktioniert CTF auch
This commit is contained in:
parent
007456f13b
commit
a7e02622ba
8 changed files with 137 additions and 449 deletions
3
TODO
3
TODO
|
@ -1,12 +1,9 @@
|
||||||
Kleine TODO-Liste:
|
Kleine TODO-Liste:
|
||||||
- Version und Identifikationsstring des
|
- Version und Identifikationsstring des
|
||||||
Renderers anpassen
|
Renderers anpassen
|
||||||
- Fehlerhafte Makros in g_local.h
|
|
||||||
- QMAX nochmal sauber entfernen
|
- QMAX nochmal sauber entfernen
|
||||||
- WIN32 und sun aus dem Game entfernen
|
- WIN32 und sun aus dem Game entfernen
|
||||||
- CTF, Rogue, Xatrix einfügen
|
- CTF, Rogue, Xatrix einfügen
|
||||||
- g_save in rogue und xatrix anpassen
|
|
||||||
- Im Spiel g_* und p_* gegen R1Q2 abgleichen
|
|
||||||
- Nightmare im Menü freischalten
|
- Nightmare im Menü freischalten
|
||||||
- Spwanflags auch für Coop per Menü anpassbar machen
|
- Spwanflags auch für Coop per Menü anpassbar machen
|
||||||
|
|
||||||
|
|
|
@ -3220,10 +3220,10 @@ int CTFUpdateJoinMenu(edict_t *ent)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctf_forcejoin->string && *ctf_forcejoin->string) {
|
if (ctf_forcejoin->string && *ctf_forcejoin->string) {
|
||||||
if (stricmp(ctf_forcejoin->string, "red") == 0) {
|
if (Q_stricmp(ctf_forcejoin->string, "red") == 0) {
|
||||||
joinmenu[jmenu_blue].text = NULL;
|
joinmenu[jmenu_blue].text = NULL;
|
||||||
joinmenu[jmenu_blue].SelectFunc = NULL;
|
joinmenu[jmenu_blue].SelectFunc = NULL;
|
||||||
} else if (stricmp(ctf_forcejoin->string, "blue") == 0) {
|
} else if (Q_stricmp(ctf_forcejoin->string, "blue") == 0) {
|
||||||
joinmenu[jmenu_red].text = NULL;
|
joinmenu[jmenu_red].text = NULL;
|
||||||
joinmenu[jmenu_red].SelectFunc = NULL;
|
joinmenu[jmenu_red].SelectFunc = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -589,7 +589,7 @@ void SpawnEntities (char *mapname, char *entities, char *spawnpoint)
|
||||||
entities = ED_ParseEdict (entities, ent);
|
entities = ED_ParseEdict (entities, ent);
|
||||||
|
|
||||||
// yet another map hack
|
// yet another map hack
|
||||||
if (!stricmp(level.mapname, "command") && !stricmp(ent->classname, "trigger_once") && !stricmp(ent->model, "*27"))
|
if (!Q_stricmp(level.mapname, "command") && !Q_stricmp(ent->classname, "trigger_once") && !Q_stricmp(ent->model, "*27"))
|
||||||
ent->spawnflags &= ~SPAWNFLAG_NOT_HARD;
|
ent->spawnflags &= ~SPAWNFLAG_NOT_HARD;
|
||||||
|
|
||||||
// remove things (except the world) from different skill levels or deathmatch
|
// remove things (except the world) from different skill levels or deathmatch
|
||||||
|
|
|
@ -176,7 +176,7 @@ void SP_target_secret (edict_t *ent)
|
||||||
ent->svflags = SVF_NOCLIENT;
|
ent->svflags = SVF_NOCLIENT;
|
||||||
level.total_secrets++;
|
level.total_secrets++;
|
||||||
// map bug hack
|
// map bug hack
|
||||||
if (!stricmp(level.mapname, "mine3") && ent->s.origin[0] == 280 && ent->s.origin[1] == -2048 && ent->s.origin[2] == -624)
|
if (!Q_stricmp(level.mapname, "mine3") && ent->s.origin[0] == 280 && ent->s.origin[1] == -2048 && ent->s.origin[2] == -624)
|
||||||
ent->message = "You have found a secret area.";
|
ent->message = "You have found a secret area.";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,7 +309,7 @@ void SP_target_changelevel (edict_t *ent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ugly hack because *SOMEBODY* screwed up their map
|
// ugly hack because *SOMEBODY* screwed up their map
|
||||||
if((stricmp(level.mapname, "fact1") == 0) && (stricmp(ent->map, "fact3") == 0))
|
if((Q_stricmp(level.mapname, "fact1") == 0) && (Q_stricmp(ent->map, "fact3") == 0))
|
||||||
ent->map = "fact3$secret1";
|
ent->map = "fact3$secret1";
|
||||||
|
|
||||||
ent->use = use_target_changelevel;
|
ent->use = use_target_changelevel;
|
||||||
|
|
|
@ -51,7 +51,7 @@ static void SP_FixCoopSpots (edict_t *self)
|
||||||
VectorSubtract(self->s.origin, spot->s.origin, d);
|
VectorSubtract(self->s.origin, spot->s.origin, d);
|
||||||
if (VectorLength(d) < 384)
|
if (VectorLength(d) < 384)
|
||||||
{
|
{
|
||||||
if ((!self->targetname) || stricmp(self->targetname, spot->targetname) != 0)
|
if ((!self->targetname) || Q_stricmp(self->targetname, spot->targetname) != 0)
|
||||||
{
|
{
|
||||||
// gi.dprintf("FixCoopSpots changed %s at %s targetname from %s to %s\n", self->classname, vtos(self->s.origin), self->targetname, spot->targetname);
|
// gi.dprintf("FixCoopSpots changed %s at %s targetname from %s to %s\n", self->classname, vtos(self->s.origin), self->targetname, spot->targetname);
|
||||||
self->targetname = spot->targetname;
|
self->targetname = spot->targetname;
|
||||||
|
@ -69,7 +69,7 @@ static void SP_CreateCoopSpots (edict_t *self)
|
||||||
{
|
{
|
||||||
edict_t *spot;
|
edict_t *spot;
|
||||||
|
|
||||||
if(stricmp(level.mapname, "security") == 0)
|
if(Q_stricmp(level.mapname, "security") == 0)
|
||||||
{
|
{
|
||||||
spot = G_Spawn();
|
spot = G_Spawn();
|
||||||
spot->classname = "info_player_coop";
|
spot->classname = "info_player_coop";
|
||||||
|
@ -107,7 +107,7 @@ void SP_info_player_start(edict_t *self)
|
||||||
{
|
{
|
||||||
if (!coop->value)
|
if (!coop->value)
|
||||||
return;
|
return;
|
||||||
if(stricmp(level.mapname, "security") == 0)
|
if(Q_stricmp(level.mapname, "security") == 0)
|
||||||
{
|
{
|
||||||
// invoke one of our gross, ugly, disgusting hacks
|
// invoke one of our gross, ugly, disgusting hacks
|
||||||
self->think = SP_CreateCoopSpots;
|
self->think = SP_CreateCoopSpots;
|
||||||
|
@ -140,20 +140,20 @@ void SP_info_player_coop(edict_t *self)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((stricmp(level.mapname, "jail2") == 0) ||
|
if((Q_stricmp(level.mapname, "jail2") == 0) ||
|
||||||
(stricmp(level.mapname, "jail4") == 0) ||
|
(Q_stricmp(level.mapname, "jail4") == 0) ||
|
||||||
(stricmp(level.mapname, "mine1") == 0) ||
|
(Q_stricmp(level.mapname, "mine1") == 0) ||
|
||||||
(stricmp(level.mapname, "mine2") == 0) ||
|
(Q_stricmp(level.mapname, "mine2") == 0) ||
|
||||||
(stricmp(level.mapname, "mine3") == 0) ||
|
(Q_stricmp(level.mapname, "mine3") == 0) ||
|
||||||
(stricmp(level.mapname, "mine4") == 0) ||
|
(Q_stricmp(level.mapname, "mine4") == 0) ||
|
||||||
(stricmp(level.mapname, "lab") == 0) ||
|
(Q_stricmp(level.mapname, "lab") == 0) ||
|
||||||
(stricmp(level.mapname, "boss1") == 0) ||
|
(Q_stricmp(level.mapname, "boss1") == 0) ||
|
||||||
(stricmp(level.mapname, "fact3") == 0) ||
|
(Q_stricmp(level.mapname, "fact3") == 0) ||
|
||||||
(stricmp(level.mapname, "biggun") == 0) ||
|
(Q_stricmp(level.mapname, "biggun") == 0) ||
|
||||||
(stricmp(level.mapname, "space") == 0) ||
|
(Q_stricmp(level.mapname, "space") == 0) ||
|
||||||
(stricmp(level.mapname, "command") == 0) ||
|
(Q_stricmp(level.mapname, "command") == 0) ||
|
||||||
(stricmp(level.mapname, "power2") == 0) ||
|
(Q_stricmp(level.mapname, "power2") == 0) ||
|
||||||
(stricmp(level.mapname, "strike") == 0))
|
(Q_stricmp(level.mapname, "strike") == 0))
|
||||||
{
|
{
|
||||||
// invoke one of our gross, ugly, disgusting hacks
|
// invoke one of our gross, ugly, disgusting hacks
|
||||||
self->think = SP_FixCoopSpots;
|
self->think = SP_FixCoopSpots;
|
||||||
|
|
|
@ -550,7 +550,7 @@ void Weapon_Generic (edict_t *ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST,
|
||||||
fire_frames, fire);
|
fire_frames, fire);
|
||||||
|
|
||||||
// run the weapon frame again if hasted
|
// run the weapon frame again if hasted
|
||||||
if (stricmp(ent->client->pers.weapon->pickup_name, "Grapple") == 0 &&
|
if (Q_stricmp(ent->client->pers.weapon->pickup_name, "Grapple") == 0 &&
|
||||||
ent->client->weaponstate == WEAPON_FIRING)
|
ent->client->weaponstate == WEAPON_FIRING)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -25,10 +25,6 @@ vec3_t vec3_origin = {0,0,0};
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#pragma optimize( "", off )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, float degrees )
|
void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, float degrees )
|
||||||
{
|
{
|
||||||
float m[3][3];
|
float m[3][3];
|
||||||
|
@ -70,10 +66,10 @@ void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point,
|
||||||
memset( zrot, 0, sizeof( zrot ) );
|
memset( zrot, 0, sizeof( zrot ) );
|
||||||
zrot[0][0] = zrot[1][1] = zrot[2][2] = 1.0F;
|
zrot[0][0] = zrot[1][1] = zrot[2][2] = 1.0F;
|
||||||
|
|
||||||
zrot[0][0] = cos( DEG2RAD( degrees ) );
|
zrot[0][0] = (float)cos( DEG2RAD( degrees ) );
|
||||||
zrot[0][1] = sin( DEG2RAD( degrees ) );
|
zrot[0][1] = (float)sin( DEG2RAD( degrees ) );
|
||||||
zrot[1][0] = -sin( DEG2RAD( degrees ) );
|
zrot[1][0] = (float)-sin( DEG2RAD( degrees ) );
|
||||||
zrot[1][1] = cos( DEG2RAD( degrees ) );
|
zrot[1][1] = (float)cos( DEG2RAD( degrees ) );
|
||||||
|
|
||||||
R_ConcatRotations( m, zrot, tmpmat );
|
R_ConcatRotations( m, zrot, tmpmat );
|
||||||
R_ConcatRotations( tmpmat, im, rot );
|
R_ConcatRotations( tmpmat, im, rot );
|
||||||
|
@ -84,12 +80,6 @@ void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#pragma optimize( "", on )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
|
void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
|
||||||
{
|
{
|
||||||
float angle;
|
float angle;
|
||||||
|
@ -97,14 +87,14 @@ void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
|
||||||
// static to help MS compiler fp bugs
|
// static to help MS compiler fp bugs
|
||||||
|
|
||||||
angle = angles[YAW] * (M_PI*2 / 360);
|
angle = angles[YAW] * (M_PI*2 / 360);
|
||||||
sy = sin(angle);
|
sy = (float)sin(angle);
|
||||||
cy = cos(angle);
|
cy = (float)cos(angle);
|
||||||
angle = angles[PITCH] * (M_PI*2 / 360);
|
angle = angles[PITCH] * (M_PI*2 / 360);
|
||||||
sp = sin(angle);
|
sp = (float)sin(angle);
|
||||||
cp = cos(angle);
|
cp = (float)cos(angle);
|
||||||
angle = angles[ROLL] * (M_PI*2 / 360);
|
angle = angles[ROLL] * (M_PI*2 / 360);
|
||||||
sr = sin(angle);
|
sr = (float)sin(angle);
|
||||||
cr = cos(angle);
|
cr = (float)cos(angle);
|
||||||
|
|
||||||
if (forward)
|
if (forward)
|
||||||
{
|
{
|
||||||
|
@ -164,7 +154,7 @@ void PerpendicularVector( vec3_t dst, const vec3_t src )
|
||||||
if ( fabs( src[i] ) < minelem )
|
if ( fabs( src[i] ) < minelem )
|
||||||
{
|
{
|
||||||
pos = i;
|
pos = i;
|
||||||
minelem = fabs( src[i] );
|
minelem = (float)fabs( src[i] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tempvec[0] = tempvec[1] = tempvec[2] = 0.0F;
|
tempvec[0] = tempvec[1] = tempvec[2] = 0.0F;
|
||||||
|
@ -250,30 +240,11 @@ void R_ConcatTransforms (float in1[3][4], float in2[3][4], float out[3][4])
|
||||||
|
|
||||||
float Q_fabs (float f)
|
float Q_fabs (float f)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
if (f >= 0)
|
|
||||||
return f;
|
|
||||||
return -f;
|
|
||||||
#else
|
|
||||||
int tmp = * ( int * ) &f;
|
int tmp = * ( int * ) &f;
|
||||||
tmp &= 0x7FFFFFFF;
|
tmp &= 0x7FFFFFFF;
|
||||||
return * ( float * ) &tmp;
|
return * ( float * ) &tmp;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined _M_IX86 && !defined C_ONLY
|
|
||||||
#pragma warning (disable:4035)
|
|
||||||
__declspec( naked ) long Q_ftol( float f )
|
|
||||||
{
|
|
||||||
static int tmp;
|
|
||||||
__asm fld dword ptr [esp+4]
|
|
||||||
__asm fistp tmp
|
|
||||||
__asm mov eax, tmp
|
|
||||||
__asm ret
|
|
||||||
}
|
|
||||||
#pragma warning (default:4035)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===============
|
===============
|
||||||
LerpAngle
|
LerpAngle
|
||||||
|
@ -292,12 +263,6 @@ float LerpAngle (float a2, float a1, float frac)
|
||||||
|
|
||||||
float anglemod(float a)
|
float anglemod(float a)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
if (a >= 0)
|
|
||||||
a -= 360*(int)(a/360);
|
|
||||||
else
|
|
||||||
a += 360*( 1 + (int)(-a/360) );
|
|
||||||
#endif
|
|
||||||
a = (360.0/65536) * ((int)(a*(65536/360.0)) & 65535);
|
a = (360.0/65536) * ((int)(a*(65536/360.0)) & 65535);
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
@ -345,13 +310,12 @@ BoxOnPlaneSide
|
||||||
Returns 1, 2, or 1 + 2
|
Returns 1, 2, or 1 + 2
|
||||||
==================
|
==================
|
||||||
*/
|
*/
|
||||||
#if !id386 || defined __linux__ || defined __FreeBSD__
|
|
||||||
int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
|
int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
|
||||||
{
|
{
|
||||||
float dist1, dist2;
|
float dist1, dist2;
|
||||||
int sides;
|
int sides;
|
||||||
|
|
||||||
// fast axial cases
|
// fast axial cases
|
||||||
if (p->type < 3)
|
if (p->type < 3)
|
||||||
{
|
{
|
||||||
if (p->dist <= emins[p->type])
|
if (p->dist <= emins[p->type])
|
||||||
|
@ -361,44 +325,43 @@ int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// general case
|
// general case
|
||||||
switch (p->signbits)
|
switch (p->signbits)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2];
|
dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2];
|
||||||
dist2 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2];
|
dist2 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2];
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
dist1 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2];
|
dist1 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2];
|
||||||
dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2];
|
dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2];
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2];
|
dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2];
|
||||||
dist2 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2];
|
dist2 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2];
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
dist1 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2];
|
dist1 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2];
|
||||||
dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2];
|
dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2];
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2];
|
dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2];
|
||||||
dist2 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2];
|
dist2 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2];
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
dist1 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2];
|
dist1 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emins[2];
|
||||||
dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2];
|
dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emaxs[2];
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2];
|
dist1 = p->normal[0]*emaxs[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2];
|
||||||
dist2 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2];
|
dist2 = p->normal[0]*emins[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2];
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
dist1 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2];
|
dist1 = p->normal[0]*emins[0] + p->normal[1]*emins[1] + p->normal[2]*emins[2];
|
||||||
dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2];
|
dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2];
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
dist1 = dist2 = 0; // shut up compiler
|
dist1 = dist2 = 0; // shut up compiler
|
||||||
assert( 0 );
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -408,250 +371,14 @@ dist2 = p->normal[0]*emaxs[0] + p->normal[1]*emaxs[1] + p->normal[2]*emaxs[2];
|
||||||
if (dist2 < p->dist)
|
if (dist2 < p->dist)
|
||||||
sides |= 2;
|
sides |= 2;
|
||||||
|
|
||||||
assert( sides != 0 );
|
|
||||||
|
|
||||||
return sides;
|
return sides;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#pragma warning( disable: 4035 )
|
|
||||||
|
|
||||||
__declspec( naked ) int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p)
|
|
||||||
{
|
|
||||||
static int bops_initialized;
|
|
||||||
static int Ljmptab[8];
|
|
||||||
|
|
||||||
__asm {
|
|
||||||
|
|
||||||
push ebx
|
|
||||||
|
|
||||||
cmp bops_initialized, 1
|
|
||||||
je initialized
|
|
||||||
mov bops_initialized, 1
|
|
||||||
|
|
||||||
mov Ljmptab[0*4], offset Lcase0
|
|
||||||
mov Ljmptab[1*4], offset Lcase1
|
|
||||||
mov Ljmptab[2*4], offset Lcase2
|
|
||||||
mov Ljmptab[3*4], offset Lcase3
|
|
||||||
mov Ljmptab[4*4], offset Lcase4
|
|
||||||
mov Ljmptab[5*4], offset Lcase5
|
|
||||||
mov Ljmptab[6*4], offset Lcase6
|
|
||||||
mov Ljmptab[7*4], offset Lcase7
|
|
||||||
|
|
||||||
initialized:
|
|
||||||
|
|
||||||
mov edx,ds:dword ptr[4+12+esp]
|
|
||||||
mov ecx,ds:dword ptr[4+4+esp]
|
|
||||||
xor eax,eax
|
|
||||||
mov ebx,ds:dword ptr[4+8+esp]
|
|
||||||
mov al,ds:byte ptr[17+edx]
|
|
||||||
cmp al,8
|
|
||||||
jge Lerror
|
|
||||||
fld ds:dword ptr[0+edx]
|
|
||||||
fld st(0)
|
|
||||||
jmp dword ptr[Ljmptab+eax*4]
|
|
||||||
Lcase0:
|
|
||||||
fmul ds:dword ptr[ebx]
|
|
||||||
fld ds:dword ptr[0+4+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[ecx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[4+ebx]
|
|
||||||
fld ds:dword ptr[0+8+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[4+ecx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[8+ebx]
|
|
||||||
fxch st(5)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fmul ds:dword ptr[8+ecx]
|
|
||||||
fxch st(1)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fxch st(3)
|
|
||||||
faddp st(2),st(0)
|
|
||||||
jmp LSetSides
|
|
||||||
Lcase1:
|
|
||||||
fmul ds:dword ptr[ecx]
|
|
||||||
fld ds:dword ptr[0+4+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[ebx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[4+ebx]
|
|
||||||
fld ds:dword ptr[0+8+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[4+ecx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[8+ebx]
|
|
||||||
fxch st(5)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fmul ds:dword ptr[8+ecx]
|
|
||||||
fxch st(1)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fxch st(3)
|
|
||||||
faddp st(2),st(0)
|
|
||||||
jmp LSetSides
|
|
||||||
Lcase2:
|
|
||||||
fmul ds:dword ptr[ebx]
|
|
||||||
fld ds:dword ptr[0+4+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[ecx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[4+ecx]
|
|
||||||
fld ds:dword ptr[0+8+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[4+ebx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[8+ebx]
|
|
||||||
fxch st(5)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fmul ds:dword ptr[8+ecx]
|
|
||||||
fxch st(1)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fxch st(3)
|
|
||||||
faddp st(2),st(0)
|
|
||||||
jmp LSetSides
|
|
||||||
Lcase3:
|
|
||||||
fmul ds:dword ptr[ecx]
|
|
||||||
fld ds:dword ptr[0+4+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[ebx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[4+ecx]
|
|
||||||
fld ds:dword ptr[0+8+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[4+ebx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[8+ebx]
|
|
||||||
fxch st(5)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fmul ds:dword ptr[8+ecx]
|
|
||||||
fxch st(1)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fxch st(3)
|
|
||||||
faddp st(2),st(0)
|
|
||||||
jmp LSetSides
|
|
||||||
Lcase4:
|
|
||||||
fmul ds:dword ptr[ebx]
|
|
||||||
fld ds:dword ptr[0+4+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[ecx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[4+ebx]
|
|
||||||
fld ds:dword ptr[0+8+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[4+ecx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[8+ecx]
|
|
||||||
fxch st(5)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fmul ds:dword ptr[8+ebx]
|
|
||||||
fxch st(1)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fxch st(3)
|
|
||||||
faddp st(2),st(0)
|
|
||||||
jmp LSetSides
|
|
||||||
Lcase5:
|
|
||||||
fmul ds:dword ptr[ecx]
|
|
||||||
fld ds:dword ptr[0+4+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[ebx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[4+ebx]
|
|
||||||
fld ds:dword ptr[0+8+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[4+ecx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[8+ecx]
|
|
||||||
fxch st(5)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fmul ds:dword ptr[8+ebx]
|
|
||||||
fxch st(1)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fxch st(3)
|
|
||||||
faddp st(2),st(0)
|
|
||||||
jmp LSetSides
|
|
||||||
Lcase6:
|
|
||||||
fmul ds:dword ptr[ebx]
|
|
||||||
fld ds:dword ptr[0+4+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[ecx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[4+ecx]
|
|
||||||
fld ds:dword ptr[0+8+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[4+ebx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[8+ecx]
|
|
||||||
fxch st(5)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fmul ds:dword ptr[8+ebx]
|
|
||||||
fxch st(1)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fxch st(3)
|
|
||||||
faddp st(2),st(0)
|
|
||||||
jmp LSetSides
|
|
||||||
Lcase7:
|
|
||||||
fmul ds:dword ptr[ecx]
|
|
||||||
fld ds:dword ptr[0+4+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[ebx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[4+ecx]
|
|
||||||
fld ds:dword ptr[0+8+edx]
|
|
||||||
fxch st(2)
|
|
||||||
fmul ds:dword ptr[4+ebx]
|
|
||||||
fxch st(2)
|
|
||||||
fld st(0)
|
|
||||||
fmul ds:dword ptr[8+ecx]
|
|
||||||
fxch st(5)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fmul ds:dword ptr[8+ebx]
|
|
||||||
fxch st(1)
|
|
||||||
faddp st(3),st(0)
|
|
||||||
fxch st(3)
|
|
||||||
faddp st(2),st(0)
|
|
||||||
LSetSides:
|
|
||||||
faddp st(2),st(0)
|
|
||||||
fcomp ds:dword ptr[12+edx]
|
|
||||||
xor ecx,ecx
|
|
||||||
fnstsw ax
|
|
||||||
fcomp ds:dword ptr[12+edx]
|
|
||||||
and ah,1
|
|
||||||
xor ah,1
|
|
||||||
add cl,ah
|
|
||||||
fnstsw ax
|
|
||||||
and ah,1
|
|
||||||
add ah,ah
|
|
||||||
add cl,ah
|
|
||||||
pop ebx
|
|
||||||
mov eax,ecx
|
|
||||||
ret
|
|
||||||
Lerror:
|
|
||||||
int 3
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#pragma warning( default: 4035 )
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void ClearBounds (vec3_t mins, vec3_t maxs)
|
void ClearBounds (vec3_t mins, vec3_t maxs)
|
||||||
{
|
{
|
||||||
mins[0] = mins[1] = mins[2] = 99999;
|
mins[0] = mins[1] = mins[2] = 99999;
|
||||||
maxs[0] = maxs[1] = maxs[2] = -99999;
|
maxs[0] = maxs[1] = maxs[2] = -99999;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddPointToBounds (vec3_t v, vec3_t mins, vec3_t maxs)
|
void AddPointToBounds (vec3_t v, vec3_t mins, vec3_t maxs)
|
||||||
{
|
{
|
||||||
|
@ -683,7 +410,7 @@ vec_t VectorNormalize (vec3_t v)
|
||||||
float length, ilength;
|
float length, ilength;
|
||||||
|
|
||||||
length = v[0]*v[0] + v[1]*v[1] + v[2]*v[2];
|
length = v[0]*v[0] + v[1]*v[1] + v[2]*v[2];
|
||||||
length = sqrt (length); // FIXME
|
length = (float)sqrt (length); // FIXME
|
||||||
|
|
||||||
if (length)
|
if (length)
|
||||||
{
|
{
|
||||||
|
@ -702,7 +429,7 @@ vec_t VectorNormalize2 (vec3_t v, vec3_t out)
|
||||||
float length, ilength;
|
float length, ilength;
|
||||||
|
|
||||||
length = v[0]*v[0] + v[1]*v[1] + v[2]*v[2];
|
length = v[0]*v[0] + v[1]*v[1] + v[2]*v[2];
|
||||||
length = sqrt (length); // FIXME
|
length = (float)sqrt (length); // FIXME
|
||||||
|
|
||||||
if (length)
|
if (length)
|
||||||
{
|
{
|
||||||
|
@ -723,7 +450,6 @@ void VectorMA (vec3_t veca, float scale, vec3_t vecb, vec3_t vecc)
|
||||||
vecc[2] = veca[2] + scale*vecb[2];
|
vecc[2] = veca[2] + scale*vecb[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
vec_t _DotProduct (vec3_t v1, vec3_t v2)
|
vec_t _DotProduct (vec3_t v1, vec3_t v2)
|
||||||
{
|
{
|
||||||
return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2];
|
return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2];
|
||||||
|
@ -767,7 +493,7 @@ vec_t VectorLength(vec3_t v)
|
||||||
length = 0;
|
length = 0;
|
||||||
for (i=0 ; i< 3 ; i++)
|
for (i=0 ; i< 3 ; i++)
|
||||||
length += v[i]*v[i];
|
length += v[i]*v[i];
|
||||||
length = sqrt (length); // FIXME
|
length = (float)sqrt (length); // FIXME
|
||||||
|
|
||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
@ -786,7 +512,6 @@ void VectorScale (vec3_t in, vec_t scale, vec3_t out)
|
||||||
out[2] = in[2]*scale;
|
out[2] = in[2]*scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Q_log2(int val)
|
int Q_log2(int val)
|
||||||
{
|
{
|
||||||
int answer=0;
|
int answer=0;
|
||||||
|
@ -885,9 +610,9 @@ COM_FilePath
|
||||||
Returns the path up to, but not including the last /
|
Returns the path up to, but not including the last /
|
||||||
============
|
============
|
||||||
*/
|
*/
|
||||||
void COM_FilePath (char *in, char *out)
|
void COM_FilePath (const char *in, char *out)
|
||||||
{
|
{
|
||||||
char *s;
|
const char *s;
|
||||||
|
|
||||||
s = in + strlen(in) - 1;
|
s = in + strlen(in) - 1;
|
||||||
|
|
||||||
|
@ -904,13 +629,13 @@ void COM_FilePath (char *in, char *out)
|
||||||
COM_DefaultExtension
|
COM_DefaultExtension
|
||||||
==================
|
==================
|
||||||
*/
|
*/
|
||||||
void COM_DefaultExtension (char *path, char *extension)
|
void COM_DefaultExtension (char *path, const char *extension)
|
||||||
{
|
{
|
||||||
char *src;
|
char *src;
|
||||||
//
|
//
|
||||||
// if path doesn't have a .EXT, append extension
|
// if path doesn't have a .EXT, append extension
|
||||||
// (extension should include the .)
|
// (extension should include the .)
|
||||||
//
|
//
|
||||||
src = path + strlen(path) - 1;
|
src = path + strlen(path) - 1;
|
||||||
|
|
||||||
while (*src != '/' && src != path)
|
while (*src != '/' && src != path)
|
||||||
|
@ -1012,7 +737,7 @@ void Swap_Init (void)
|
||||||
{
|
{
|
||||||
byte swaptest[2] = {1,0};
|
byte swaptest[2] = {1,0};
|
||||||
|
|
||||||
// set the byte swapping variables in a portable manner
|
// set the byte swapping variables in a portable manner
|
||||||
if ( *(short *)swaptest == 1)
|
if ( *(short *)swaptest == 1)
|
||||||
{
|
{
|
||||||
bigendien = false;
|
bigendien = false;
|
||||||
|
@ -1053,7 +778,7 @@ char *va(char *format, ...)
|
||||||
static char string[1024];
|
static char string[1024];
|
||||||
|
|
||||||
va_start (argptr, format);
|
va_start (argptr, format);
|
||||||
vsprintf (string, format,argptr);
|
vsnprintf (string, 1024, format, argptr);
|
||||||
va_end (argptr);
|
va_end (argptr);
|
||||||
|
|
||||||
return string;
|
return string;
|
||||||
|
@ -1085,7 +810,7 @@ char *COM_Parse (char **data_p)
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// skip whitespace
|
// skip whitespace
|
||||||
skipwhite:
|
skipwhite:
|
||||||
while ( (c = *data) <= ' ')
|
while ( (c = *data) <= ' ')
|
||||||
{
|
{
|
||||||
|
@ -1097,7 +822,7 @@ skipwhite:
|
||||||
data++;
|
data++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// skip // comments
|
// skip // comments
|
||||||
if (c=='/' && data[1] == '/')
|
if (c=='/' && data[1] == '/')
|
||||||
{
|
{
|
||||||
while (*data && *data != '\n')
|
while (*data && *data != '\n')
|
||||||
|
@ -1105,8 +830,7 @@ skipwhite:
|
||||||
goto skipwhite;
|
goto skipwhite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// handle quoted strings specially
|
||||||
// handle quoted strings specially
|
|
||||||
if (c == '\"')
|
if (c == '\"')
|
||||||
{
|
{
|
||||||
data++;
|
data++;
|
||||||
|
@ -1127,7 +851,7 @@ skipwhite:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse a regular word
|
// parse a regular word
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (len < MAX_TOKEN_CHARS)
|
if (len < MAX_TOKEN_CHARS)
|
||||||
|
@ -1141,7 +865,6 @@ skipwhite:
|
||||||
|
|
||||||
if (len == MAX_TOKEN_CHARS)
|
if (len == MAX_TOKEN_CHARS)
|
||||||
{
|
{
|
||||||
// Com_Printf ("Token exceeded %i chars, discarded.\n", MAX_TOKEN_CHARS);
|
|
||||||
len = 0;
|
len = 0;
|
||||||
}
|
}
|
||||||
com_token[len] = 0;
|
com_token[len] = 0;
|
||||||
|
@ -1177,14 +900,12 @@ void Com_PageInMemory (byte *buffer, int size)
|
||||||
============================================================================
|
============================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* PATCH: matt */
|
||||||
|
/* use our own strncasecmp instead of this implementation */
|
||||||
// FIXME: replace all Q_stricmp with Q_strcasecmp
|
// FIXME: replace all Q_stricmp with Q_strcasecmp
|
||||||
int Q_stricmp (char *s1, char *s2)
|
int Q_stricmp (const char *s1, const char *s2)
|
||||||
{
|
{
|
||||||
#if defined(WIN32)
|
|
||||||
return _stricmp (s1, s2);
|
|
||||||
#else
|
|
||||||
return strcasecmp (s1, s2);
|
return strcasecmp (s1, s2);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1225,14 +946,18 @@ void Com_sprintf (char *dest, int size, char *fmt, ...)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
va_list argptr;
|
va_list argptr;
|
||||||
char bigbuffer[0x10000];
|
static char bigbuffer[0x10000];
|
||||||
|
|
||||||
va_start (argptr,fmt);
|
va_start (argptr,fmt);
|
||||||
len = vsprintf (bigbuffer,fmt,argptr);
|
len = vsnprintf (bigbuffer,0x10000,fmt,argptr);
|
||||||
va_end (argptr);
|
va_end (argptr);
|
||||||
if (len >= size)
|
if (len >= size || len == size)
|
||||||
Com_Printf ("Com_sprintf: overflow of %i in %i\n", len, size);
|
{
|
||||||
strncpy (dest, bigbuffer, size-1);
|
Com_Printf ("Com_sprintf: overflow\n");
|
||||||
|
len = size-1;
|
||||||
|
}
|
||||||
|
bigbuffer[size-1] = '\0';
|
||||||
|
strcpy (dest, bigbuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1302,7 +1027,6 @@ void Info_RemoveKey (char *s, char *key)
|
||||||
|
|
||||||
if (strstr (key, "\\"))
|
if (strstr (key, "\\"))
|
||||||
{
|
{
|
||||||
// Com_Printf ("Can't use a key with a \\\n");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1414,6 +1138,3 @@ void Info_SetValueForKey (char *s, char *key, char *value)
|
||||||
*s = 0;
|
*s = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//====================================================================
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,17 +20,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
// q_shared.h -- included first by ALL program modules
|
// q_shared.h -- included first by ALL program modules
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
// unknown pragmas are SUPPOSED to be ignored, but....
|
|
||||||
#pragma warning(disable : 4244) // MIPS
|
|
||||||
#pragma warning(disable : 4136) // X86
|
|
||||||
#pragma warning(disable : 4051) // ALPHA
|
|
||||||
|
|
||||||
#pragma warning(disable : 4018) // signed/unsigned mismatch
|
|
||||||
#pragma warning(disable : 4305) // truncation from const double to float
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -39,18 +28,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#if (defined _M_IX86 || defined __i386__) && !defined C_ONLY && !defined __sun__
|
|
||||||
#define id386 1
|
|
||||||
#else
|
|
||||||
#define id386 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined _M_ALPHA && !defined C_ONLY
|
|
||||||
#define idaxp 1
|
|
||||||
#else
|
|
||||||
#define idaxp 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef unsigned char byte;
|
typedef unsigned char byte;
|
||||||
typedef enum {false, true} qboolean;
|
typedef enum {false, true} qboolean;
|
||||||
|
|
||||||
|
@ -145,11 +122,7 @@ extern vec3_t vec3_origin;
|
||||||
// microsoft's fabs seems to be ungodly slow...
|
// microsoft's fabs seems to be ungodly slow...
|
||||||
//float Q_fabs (float f);
|
//float Q_fabs (float f);
|
||||||
//#define fabs(f) Q_fabs(f)
|
//#define fabs(f) Q_fabs(f)
|
||||||
#if !defined C_ONLY && !defined __linux__ && !defined __FreeBSD__ && !defined __sgi
|
|
||||||
extern long Q_ftol( float f );
|
|
||||||
#else
|
|
||||||
#define Q_ftol( f ) ( long ) (f)
|
#define Q_ftol( f ) ( long ) (f)
|
||||||
#endif
|
|
||||||
|
|
||||||
#define DotProduct(x,y) (x[0]*y[0]+x[1]*y[1]+x[2]*y[2])
|
#define DotProduct(x,y) (x[0]*y[0]+x[1]*y[1]+x[2]*y[2])
|
||||||
#define VectorSubtract(a,b,c) (c[0]=a[0]-b[0],c[1]=a[1]-b[1],c[2]=a[2]-b[2])
|
#define VectorSubtract(a,b,c) (c[0]=a[0]-b[0],c[1]=a[1]-b[1],c[2]=a[2]-b[2])
|
||||||
|
@ -212,8 +185,8 @@ void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point,
|
||||||
char *COM_SkipPath (char *pathname);
|
char *COM_SkipPath (char *pathname);
|
||||||
void COM_StripExtension (char *in, char *out);
|
void COM_StripExtension (char *in, char *out);
|
||||||
void COM_FileBase (char *in, char *out);
|
void COM_FileBase (char *in, char *out);
|
||||||
void COM_FilePath (char *in, char *out);
|
void COM_FilePath (const char *in, char *out);
|
||||||
void COM_DefaultExtension (char *path, char *extension);
|
void COM_DefaultExtension (char *path, const char *extension);
|
||||||
|
|
||||||
char *COM_Parse (char **data_p);
|
char *COM_Parse (char **data_p);
|
||||||
// data is an in/out parm, returns a parsed out token
|
// data is an in/out parm, returns a parsed out token
|
||||||
|
@ -225,7 +198,7 @@ void Com_PageInMemory (byte *buffer, int size);
|
||||||
//=============================================
|
//=============================================
|
||||||
|
|
||||||
// portable case insensitive compare
|
// portable case insensitive compare
|
||||||
int Q_stricmp (char *s1, char *s2);
|
int Q_stricmp (const char *s1, const char *s2);
|
||||||
int Q_strcasecmp (char *s1, char *s2);
|
int Q_strcasecmp (char *s1, char *s2);
|
||||||
int Q_strncasecmp (char *s1, char *s2, int n);
|
int Q_strncasecmp (char *s1, char *s2, int n);
|
||||||
|
|
||||||
|
@ -380,8 +353,6 @@ COLLISION DETECTION
|
||||||
#define SURF_FLOWING 0x40 // scroll towards angle
|
#define SURF_FLOWING 0x40 // scroll towards angle
|
||||||
#define SURF_NODRAW 0x80 // don't bother referencing the texture
|
#define SURF_NODRAW 0x80 // don't bother referencing the texture
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// content masks
|
// content masks
|
||||||
#define MASK_ALL (-1)
|
#define MASK_ALL (-1)
|
||||||
#define MASK_SOLID (CONTENTS_SOLID|CONTENTS_WINDOW)
|
#define MASK_SOLID (CONTENTS_SOLID|CONTENTS_WINDOW)
|
||||||
|
@ -587,6 +558,24 @@ typedef struct
|
||||||
#define EF_TRACKERTRAIL 0x80000000
|
#define EF_TRACKERTRAIL 0x80000000
|
||||||
//ROGUE
|
//ROGUE
|
||||||
|
|
||||||
|
#ifdef QMAX
|
||||||
|
#define PART_GRAVITY 1
|
||||||
|
#define PART_SPARK 2
|
||||||
|
#define PART_ANGLED 4
|
||||||
|
#define PART_DIRECTION 8
|
||||||
|
#define PART_TRANS 16
|
||||||
|
#define PART_SHADED 32
|
||||||
|
#define PART_LIGHTNING 64
|
||||||
|
#define PART_BEAM 128
|
||||||
|
#define PART_LENSFLARE 256
|
||||||
|
#define PART_DEPTHHACK_SHORT 512
|
||||||
|
#define PART_DEPTHHACK_MID 1024
|
||||||
|
#define PART_DEPTHHACK_LONG 2048
|
||||||
|
|
||||||
|
//combo flags
|
||||||
|
#define PART_DEPTHHACK (PART_DEPTHHACK_SHORT|PART_DEPTHHACK_MID|PART_DEPTHHACK_LONG)
|
||||||
|
#endif
|
||||||
|
|
||||||
// entity_state_t->renderfx flags
|
// entity_state_t->renderfx flags
|
||||||
#define RF_MINLIGHT 1 // allways have some light (viewmodel)
|
#define RF_MINLIGHT 1 // allways have some light (viewmodel)
|
||||||
#define RF_VIEWERMODEL 2 // don't draw through eyes, only mirrors
|
#define RF_VIEWERMODEL 2 // don't draw through eyes, only mirrors
|
||||||
|
@ -601,6 +590,7 @@ typedef struct
|
||||||
#define RF_SHELL_RED 1024
|
#define RF_SHELL_RED 1024
|
||||||
#define RF_SHELL_GREEN 2048
|
#define RF_SHELL_GREEN 2048
|
||||||
#define RF_SHELL_BLUE 4096
|
#define RF_SHELL_BLUE 4096
|
||||||
|
#define RF_NOSHADOW 8192 /* don't draw a shadow */
|
||||||
|
|
||||||
//ROGUE
|
//ROGUE
|
||||||
#define RF_IR_VISIBLE 0x00008000 // 32768
|
#define RF_IR_VISIBLE 0x00008000 // 32768
|
||||||
|
@ -930,7 +920,7 @@ typedef enum
|
||||||
TE_BLUEHYPERBLASTER,
|
TE_BLUEHYPERBLASTER,
|
||||||
TE_PLASMA_EXPLOSION,
|
TE_PLASMA_EXPLOSION,
|
||||||
TE_TUNNEL_SPARKS,
|
TE_TUNNEL_SPARKS,
|
||||||
//ROGUE
|
//ROGUE
|
||||||
TE_BLASTER2,
|
TE_BLASTER2,
|
||||||
TE_RAILTRAIL2,
|
TE_RAILTRAIL2,
|
||||||
TE_FLAME,
|
TE_FLAME,
|
||||||
|
@ -957,7 +947,7 @@ typedef enum
|
||||||
TE_EXPLOSION1_BIG,
|
TE_EXPLOSION1_BIG,
|
||||||
TE_EXPLOSION1_NP,
|
TE_EXPLOSION1_NP,
|
||||||
TE_FLECHETTE
|
TE_FLECHETTE
|
||||||
//ROGUE
|
//ROGUE
|
||||||
} temp_event_t;
|
} temp_event_t;
|
||||||
|
|
||||||
#define SPLASH_UNKNOWN 0
|
#define SPLASH_UNKNOWN 0
|
||||||
|
@ -1040,36 +1030,6 @@ typedef enum
|
||||||
#define DF_NO_SPHERES 0x00100000
|
#define DF_NO_SPHERES 0x00100000
|
||||||
//ROGUE
|
//ROGUE
|
||||||
|
|
||||||
/*
|
|
||||||
ROGUE - VERSIONS
|
|
||||||
1234 08/13/1998 Activision
|
|
||||||
1235 08/14/1998 Id Software
|
|
||||||
1236 08/15/1998 Steve Tietze
|
|
||||||
1237 08/15/1998 Phil Dobranski
|
|
||||||
1238 08/15/1998 John Sheley
|
|
||||||
1239 08/17/1998 Barrett Alexander
|
|
||||||
1230 08/17/1998 Brandon Fish
|
|
||||||
1245 08/17/1998 Don MacAskill
|
|
||||||
1246 08/17/1998 David "Zoid" Kirsch
|
|
||||||
1247 08/17/1998 Manu Smith
|
|
||||||
1248 08/17/1998 Geoff Scully
|
|
||||||
1249 08/17/1998 Andy Van Fossen
|
|
||||||
1240 08/20/1998 Activision Build 2
|
|
||||||
1256 08/20/1998 Ranger Clan
|
|
||||||
1257 08/20/1998 Ensemble Studios
|
|
||||||
1258 08/21/1998 Robert Duffy
|
|
||||||
1259 08/21/1998 Stephen Seachord
|
|
||||||
1250 08/21/1998 Stephen Heaslip
|
|
||||||
1267 08/21/1998 Samir Sandesara
|
|
||||||
1268 08/21/1998 Oliver Wyman
|
|
||||||
1269 08/21/1998 Steven Marchegiano
|
|
||||||
1260 08/21/1998 Build #2 for Nihilistic
|
|
||||||
1278 08/21/1998 Build #2 for Ensemble
|
|
||||||
|
|
||||||
9999 08/20/1998 Internal Use
|
|
||||||
*/
|
|
||||||
#define ROGUE_VERSION_ID 1278
|
|
||||||
|
|
||||||
#define ROGUE_VERSION_STRING "08/21/1998 Beta 2 for Ensemble"
|
#define ROGUE_VERSION_STRING "08/21/1998 Beta 2 for Ensemble"
|
||||||
|
|
||||||
// ROGUE
|
// ROGUE
|
||||||
|
@ -1198,3 +1158,13 @@ typedef struct
|
||||||
extern int vidref_val;
|
extern int vidref_val;
|
||||||
// PGM
|
// PGM
|
||||||
// ==================
|
// ==================
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PATCH: eliasm
|
||||||
|
*
|
||||||
|
* Error-safe versions of fread and fwrite
|
||||||
|
*/
|
||||||
|
size_t verify_fread( void *, size_t, size_t, FILE * );
|
||||||
|
size_t verify_fwrite( void *, size_t, size_t, FILE * );
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue