Some more changes

This commit is contained in:
Walter Julius Hennecke 2013-07-12 18:52:19 +02:00
parent e41e1d1cbf
commit 61ee99a379
5 changed files with 53 additions and 33 deletions

View file

@ -1,7 +1,7 @@
// Copyright (C) 1999-2000 Id Software, Inc. // Copyright (C) 1999-2000 Id Software, Inc.
// //
#include "g_local.h" #include "g_active.h"
#include "g_client.h" #include "g_client.h"
#include "g_spawn.h" #include "g_spawn.h"
#include "g_cmds.h" #include "g_cmds.h"

7
code/game/g_active.h Normal file
View file

@ -0,0 +1,7 @@
#ifndef _G_ACTIVE_H
#define _G_ACTIVE_H
#include "g_local.h"
void detpack_shot( gentity_t* self, gentity_t* inflictor, gentity_t* attacker, int32_t damage, int32_t meansOfDeath );
#endif /* _G_ACTIVE_H */

View file

@ -694,6 +694,7 @@ static void Touch_Item (gentity_t* ent, gentity_t* other, trace_t* trace) {
ent->nextthink = level.time + respawn * 1000; ent->nextthink = level.time + respawn * 1000;
ent->think = RespawnItem; ent->think = RespawnItem;
} }
trap_LinkEntity( ent ); trap_LinkEntity( ent );
} }
@ -707,9 +708,9 @@ LaunchItem
Spawns an item and tosses it forward Spawns an item and tosses it forward
================ ================
*/ */
gentity_t *LaunchItem( gitem_t *item, gentity_t *who, vec3_t origin, vec3_t velocity, int flags, char *txt) // RPG-X: Marcin: for ThrowWeapon 03/12/2008 static gentity_t* LaunchItem( gitem_t* item, gentity_t* who, vec3_t origin, vec3_t velocity, int32_t flags, char* txt) // RPG-X: Marcin: for ThrowWeapon 03/12/2008
{ // and for PADD stuff too 06/12/2008, 08/12/2008 { // and for PADD stuff too 06/12/2008, 08/12/2008
gentity_t *dropped; gentity_t* dropped = NULL;
dropped = G_Spawn(); dropped = G_Spawn();
@ -744,7 +745,7 @@ gentity_t *LaunchItem( gitem_t *item, gentity_t *who, vec3_t origin, vec3_t velo
dropped->flags = flags; // FL_DROPPED_ITEM; // RPG-X: Marcin: for ThrowWeapon - 03/12/2008 dropped->flags = flags; // FL_DROPPED_ITEM; // RPG-X: Marcin: for ThrowWeapon - 03/12/2008
if( flags & FL_THROWN_ITEM) { if( (flags & FL_THROWN_ITEM) != 0 ) {
dropped->clipmask = MASK_SHOT; dropped->clipmask = MASK_SHOT;
dropped->s.pos.trTime = level.time - 50; dropped->s.pos.trTime = level.time - 50;
VectorScale( velocity, 300, dropped->s.pos.trDelta ); VectorScale( velocity, 300, dropped->s.pos.trDelta );
@ -758,10 +759,14 @@ gentity_t *LaunchItem( gitem_t *item, gentity_t *who, vec3_t origin, vec3_t velo
return dropped; return dropped;
} }
gentity_t *DropWeapon( gentity_t *ent, gitem_t *item, float angle, int flags, char *txt ) { gentity_t *DropWeapon( gentity_t *ent, gitem_t *item, double angle, int32_t flags, char *txt ) {
vec3_t velocity; vec3_t velocity;
vec3_t origin; vec3_t origin;
if(ent == NULL) {
return NULL;
}
VectorCopy( ent->s.pos.trBase, origin ); VectorCopy( ent->s.pos.trBase, origin );
// set aiming directions // set aiming directions
@ -775,13 +780,18 @@ gentity_t *DropWeapon( gentity_t *ent, gitem_t *item, float angle, int flags, ch
// extra vertical velocity // extra vertical velocity
velocity[2] += 0.2; velocity[2] += 0.2;
VectorNormalize( velocity ); VectorNormalize( velocity );
return LaunchItem( item, ent, origin, velocity, flags, txt ); return LaunchItem( item, ent, origin, velocity, flags, txt );
} }
gentity_t *Drop_Item( gentity_t *ent, gitem_t *item, float angle ) { gentity_t* Drop_Item( gentity_t* ent, gitem_t* item, double angle ) {
vec3_t velocity; vec3_t velocity;
vec3_t angles; vec3_t angles;
if(ent == NULL) {
return;
}
VectorCopy( ent->s.apos.trBase, angles ); VectorCopy( ent->s.apos.trBase, angles );
angles[YAW] += angle; angles[YAW] += angle;
angles[PITCH] = 0; // always forward angles[PITCH] = 0; // always forward
@ -801,9 +811,11 @@ Use_Item
Respawn the item Respawn the item
================ ================
*/ */
void Use_Item( gentity_t *ent, gentity_t *other, gentity_t *activator ) { static void Use_Item( gentity_t* ent, gentity_t* other, gentity_t* activator ) {
if(ent != NULL) {
RespawnItem( ent ); RespawnItem( ent );
} }
}
//====================================================================== //======================================================================
@ -817,15 +829,15 @@ static void FinishSpawningItem( gentity_t *ent ) {
trace_t tr; trace_t tr;
vec3_t dest; vec3_t dest;
if ( !ent ) if ( ent == NULL )
{ {
Com_Printf("print \"Ent Missing\""); DEVELOPER(G_Printf("print \"Ent Missing\"");)
return; return;
} }
if ( !ent->item ) if ( ent->item == NULL )
{ {
Com_Printf("print \"Ent->item Missing\""); DEVELOPER(G_Printf("print \"Ent->item Missing\"");)
return; return;
} }
@ -844,19 +856,21 @@ static void FinishSpawningItem( gentity_t *ent ) {
Com_Printf("print \"giType %i!\n\"", ent->item->giType); Com_Printf("print \"giType %i!\n\"", ent->item->giType);
if ( ent->spawnflags & 1 ) { if ( (ent->spawnflags & 1) != 0 ) {
// suspended // suspended
G_SetOrigin( ent, ent->s.origin ); G_SetOrigin( ent, ent->s.origin );
} else { } else {
// drop to floor // drop to floor
VectorSet( dest, ent->s.origin[0], ent->s.origin[1], ent->s.origin[2] - 4096 ); VectorSet( dest, ent->s.origin[0], ent->s.origin[1], ent->s.origin[2] - 4096 );
memset(&tr, 0, sizeof(trace_t));
trap_Trace( &tr, ent->s.origin, ent->r.mins, ent->r.maxs, dest, ent->s.number, MASK_SOLID ); trap_Trace( &tr, ent->s.origin, ent->r.mins, ent->r.maxs, dest, ent->s.number, MASK_SOLID );
if ( tr.startsolid ) { if ( tr.startsolid ) {
G_Printf ("FinishSpawningItem: removing %s startsolid at %s\n", ent->classname, vtos(ent->s.origin)); DEVELOPER(G_Printf ("FinishSpawningItem: removing %s startsolid at %s\n", ent->classname, vtos(ent->s.origin));)
#ifndef FINAL_BUILD #ifndef FINAL_BUILD
G_Error("FinishSpawningItem: removing %s startsolid at %s\n", ent->classname, vtos(ent->s.origin)); G_Error("FinishSpawningItem: removing %s startsolid at %s\n", ent->classname, vtos(ent->s.origin));
#endif #endif
G_Printf ("FinishSpawningItem: %s startsolid at %s\n", ent->classname, vtos(ent->s.origin)); DEVELOPER(G_Printf ("FinishSpawningItem: %s startsolid at %s\n", ent->classname, vtos(ent->s.origin));)
G_FreeEntity( ent ); G_FreeEntity( ent );
return; return;
@ -869,7 +883,7 @@ static void FinishSpawningItem( gentity_t *ent ) {
} }
// team slaves and targeted items aren't present at start // team slaves and targeted items aren't present at start
if ( ( ent->flags & FL_TEAMSLAVE ) || ent->targetname ) { if ( (( ent->flags & FL_TEAMSLAVE ) != 0) || (ent->targetname != NULL) ) {
ent->s.eFlags |= EF_NODRAW; ent->s.eFlags |= EF_NODRAW;
ent->r.contents = 0; ent->r.contents = 0;
return; return;
@ -887,8 +901,6 @@ Traces down to find where an item should rest, instead of letting them
free fall from their spawn points free fall from their spawn points
================ ================
*/ */
extern void detpack_shot( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int meansOfDeath );
qboolean FinishSpawningDetpack( gentity_t *ent, int itemIndex ) qboolean FinishSpawningDetpack( gentity_t *ent, int itemIndex )
{ {
trace_t tr; trace_t tr;

View file

@ -2,6 +2,7 @@
#define _G_ITEMS_H #define _G_ITEMS_H
#include "g_local.h" #include "g_local.h"
#include "g_active.h"
/** /**
* Data structures + functions for the PADD messaging system. * Data structures + functions for the PADD messaging system.
@ -48,7 +49,7 @@ void G_SpawnItem (gentity_t* ent, gitem_t* item);
* \param angle Direction to toss to. * \param angle Direction to toss to.
* \return The entity for the item. * \return The entity for the item.
*/ */
/*@shared@*/ /*@null@*/ gentity_t* Drop_Item( gentity_t* ent, gitem_t* item, float angle ); /*@shared@*/ /*@null@*/ gentity_t* Drop_Item( gentity_t* ent, gitem_t* item, double angle );
/** /**
* Clear all registered items. * Clear all registered items.
@ -67,4 +68,17 @@ void RegisterItem( gitem_t* item );
*/ */
void SaveRegisteredItems( void ); void SaveRegisteredItems( void );
/**
* Drop a weapon.
*
* \author Ubergames - Marcin
* \date 03/12/2008
* \param ent The client.
* \param item The item.
* \param angle Angle to throw at.
* \param flags Entity flags to use.
* \param Optional message for PADD dropping.
*/
/*@shared@*/ /*@null@*/ gentity_t *DropWeapon( gentity_t* ent, gitem_t* item, double angle, int32_t flags, char* txt );
#endif /* _G_ITEMS_H */ #endif /* _G_ITEMS_H */

View file

@ -1798,19 +1798,6 @@ void G_Active_ShieldRemove(gentity_t* self);
*/ */
void ThrowWeapon( gentity_t* ent, char* txt ); void ThrowWeapon( gentity_t* ent, char* txt );
/**
* Drop a weapon.
*
* \author Ubergames - Marcin
* \date 03/12/2008
* \param ent The client.
* \param item The item.
* \param angle Angle to throw at.
* \param flags Entity flags to use.
* \param Optional message for PADD dropping.
*/
/*@shared@*/ /*@null@*/ gentity_t *DropWeapon( gentity_t* ent, gitem_t* item, float angle, int flags, char* txt );
// //
// g_mem.c // g_mem.c
// //