255 lines
6.9 KiB
C
255 lines
6.9 KiB
C
|
//-----------------------------------------------------------------------------
|
||
|
//
|
||
|
// $Logfile:: /Quake 2 Engine/Sin/code/game/g_spawn.h $
|
||
|
// $Revision:: 18 $
|
||
|
// $Author:: Jimdose $
|
||
|
// $Date:: 11/07/98 10:01p $
|
||
|
//
|
||
|
// Copyright (C) 1998 by Ritual Entertainment, Inc.
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
// This source is may not be distributed and/or modified without
|
||
|
// expressly written permission by Ritual Entertainment, Inc.
|
||
|
//
|
||
|
// $Log:: /Quake 2 Engine/Sin/code/game/g_spawn.h $
|
||
|
//
|
||
|
// 18 11/07/98 10:01p Jimdose
|
||
|
// added G_GetClassFromArgs
|
||
|
//
|
||
|
// 17 10/25/98 11:53p Jimdose
|
||
|
// added EXPORT_TEMPLATE
|
||
|
//
|
||
|
// 16 10/17/98 8:12p Jimdose
|
||
|
// Changed G_CallSpawn2 to G_CallSpawn
|
||
|
//
|
||
|
// 15 10/17/98 12:21a Jimdose
|
||
|
// Added G_ResetEdicts
|
||
|
//
|
||
|
// 14 10/15/98 7:13p Jimdose
|
||
|
// Overrode = for SpawnArgGroup. Fixes crash on level change with multiplayer
|
||
|
//
|
||
|
// 13 10/14/98 10:58p Jimdose
|
||
|
// added archive functions to spawnargs classes
|
||
|
// G_MapInit now accepts mapname
|
||
|
//
|
||
|
// 12 10/14/98 1:20a Jimdose
|
||
|
// Got cross-level persistant info working
|
||
|
//
|
||
|
// 11 10/10/98 1:33a Jimdose
|
||
|
// Added G_LevelStart and G_Precache
|
||
|
//
|
||
|
// 10 10/07/98 11:47p Jimdose
|
||
|
// Added G_LevelShutdown and G_MapInit
|
||
|
//
|
||
|
// 9 8/29/98 9:49p Jimdose
|
||
|
// Moved prototypes from g_local.h
|
||
|
//
|
||
|
// 8 8/27/98 9:05p Jimdose
|
||
|
// Moved some prototypes that didn't belong here to g_utils.h
|
||
|
//
|
||
|
// 7 8/12/98 3:19p Aldie
|
||
|
// Added G_CallSpawn2 that returns pointer to entity created.
|
||
|
//
|
||
|
// 6 5/24/98 8:46p Jimdose
|
||
|
// Made a lot of functions more str-friendly.
|
||
|
// Got rid of a lot of char * based strings
|
||
|
// Cleaned up get spawn arg functions and sound functions
|
||
|
// sound functions now use consistant syntax
|
||
|
//
|
||
|
// 5 5/24/98 4:48p Jimdose
|
||
|
// Made char *'s const
|
||
|
//
|
||
|
// 4 5/24/98 2:46p Markd
|
||
|
// Made char *'s into const char *'s
|
||
|
//
|
||
|
// 3 3/13/98 7:25p Aldie
|
||
|
// Added GetVector
|
||
|
//
|
||
|
// 2 2/03/98 11:06a Jimdose
|
||
|
// Converted to work with Sin progs
|
||
|
//
|
||
|
// DESCRIPTION:
|
||
|
//
|
||
|
|
||
|
#ifndef __G_SPAWN_H__
|
||
|
#define __G_SPAWN_H__
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
|
||
|
#include "entity.h"
|
||
|
|
||
|
// spawnflags
|
||
|
// these are set with checkboxes on each entity in the map editor
|
||
|
#define SPAWNFLAG_NOT_EASY 0x00000100
|
||
|
#define SPAWNFLAG_NOT_MEDIUM 0x00000200
|
||
|
#define SPAWNFLAG_NOT_HARD 0x00000400
|
||
|
#define SPAWNFLAG_NOT_DEATHMATCH 0x00000800
|
||
|
#define SPAWNFLAG_NOT_COOP 0x00001000
|
||
|
#define SPAWNFLAG_DEVELOPMENT 0x00002000
|
||
|
#define SPAWNFLAG_DETAIL 0x00004000
|
||
|
|
||
|
class EXPORT_FROM_DLL SpawnArg : public Class
|
||
|
{
|
||
|
public:
|
||
|
char key[ 64 ];
|
||
|
char value[ 256 ];
|
||
|
|
||
|
CLASS_PROTOTYPE( SpawnArg );
|
||
|
|
||
|
SpawnArg();
|
||
|
SpawnArg( SpawnArg &arg );
|
||
|
friend int operator==( SpawnArg a, SpawnArg b );
|
||
|
virtual void Archive( Archiver &arc );
|
||
|
virtual void Unarchive( Archiver &arc );
|
||
|
|
||
|
};
|
||
|
|
||
|
inline int operator==
|
||
|
(
|
||
|
SpawnArg a,
|
||
|
SpawnArg b
|
||
|
)
|
||
|
|
||
|
{
|
||
|
int i;
|
||
|
|
||
|
i = strcmp( a.key, b.key );
|
||
|
if ( i )
|
||
|
{
|
||
|
return i;
|
||
|
}
|
||
|
|
||
|
return strcmp( a.value, b.value );
|
||
|
}
|
||
|
|
||
|
#ifdef EXPORT_TEMPLATE
|
||
|
template class EXPORT_FROM_DLL Container<SpawnArg>;
|
||
|
#endif
|
||
|
|
||
|
class EXPORT_FROM_DLL SpawnArgs : public Class
|
||
|
{
|
||
|
public:
|
||
|
Container<SpawnArg> argList;
|
||
|
|
||
|
CLASS_PROTOTYPE( SpawnArgs );
|
||
|
|
||
|
SpawnArgs();
|
||
|
SpawnArgs( SpawnArgs &arglist );
|
||
|
int NumArgs( void );
|
||
|
void SetArgs( void );
|
||
|
void RestoreArgs( void );
|
||
|
void operator=( SpawnArgs &a );
|
||
|
friend int operator==( SpawnArgs a, SpawnArgs b );
|
||
|
virtual void Archive( Archiver &arc );
|
||
|
virtual void Unarchive( Archiver &arc );
|
||
|
};
|
||
|
|
||
|
inline int operator==
|
||
|
(
|
||
|
SpawnArgs a,
|
||
|
SpawnArgs b
|
||
|
)
|
||
|
|
||
|
{
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
#ifdef EXPORT_TEMPLATE
|
||
|
template class EXPORT_FROM_DLL Container<SpawnArgs>;
|
||
|
#endif
|
||
|
|
||
|
class EXPORT_FROM_DLL SpawnArgGroup : public Class
|
||
|
{
|
||
|
public:
|
||
|
Container<SpawnArgs> spawnArgList;
|
||
|
|
||
|
CLASS_PROTOTYPE( SpawnArgGroup );
|
||
|
|
||
|
SpawnArgGroup();
|
||
|
SpawnArgGroup( SpawnArgGroup &group );
|
||
|
int NumInGroup( void );
|
||
|
void AddArgs( void );
|
||
|
void RestoreArgs( int i );
|
||
|
void operator=( SpawnArgGroup &a );
|
||
|
friend int operator==( SpawnArgGroup a, SpawnArgGroup b );
|
||
|
virtual void Archive( Archiver &arc );
|
||
|
virtual void Unarchive( Archiver &arc );
|
||
|
};
|
||
|
|
||
|
inline int operator==
|
||
|
(
|
||
|
SpawnArgGroup a,
|
||
|
SpawnArgGroup b
|
||
|
)
|
||
|
|
||
|
{
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
#ifdef EXPORT_TEMPLATE
|
||
|
template class EXPORT_FROM_DLL Container<SpawnArgGroup>;
|
||
|
#endif
|
||
|
|
||
|
class EXPORT_FROM_DLL SpawnArgsForEntity : public Class
|
||
|
{
|
||
|
public:
|
||
|
Container<SpawnArgGroup> groupList;
|
||
|
Container<int> entnumList;
|
||
|
|
||
|
CLASS_PROTOTYPE( SpawnArgsForEntity );
|
||
|
|
||
|
void Reset( void );
|
||
|
void AddEnt( Entity *ent );
|
||
|
qboolean RestoreEnt( Entity *ent );
|
||
|
void RestoreEnts( void );
|
||
|
virtual void Archive( Archiver &arc );
|
||
|
virtual void Unarchive( Archiver &arc );
|
||
|
};
|
||
|
|
||
|
extern SpawnArgsForEntity PersistantData;
|
||
|
|
||
|
void G_SetFloatArg( const char *key, double value );
|
||
|
void G_SetIntArg( const char *key, int value );
|
||
|
qboolean G_SetSpawnArg( const char *keyname, const char *value );
|
||
|
|
||
|
void G_DefaultArg( const char *key, const char *defaultvalue );
|
||
|
void G_DefaultFloatArg( const char *key, double defaultvalue );
|
||
|
void G_DefaultIntArg( const char *key, int defaultvalue );
|
||
|
|
||
|
float G_GetFloatArg( const char *key, double defaultvalue = 0 );
|
||
|
Vector G_GetVectorArg( const char *key, Vector defaultvalue = Vector( 0, 0, 0 ) );
|
||
|
int G_GetIntArg( const char *key, int defaultvalue = 0 );
|
||
|
str G_GetStringArg( const char *key, const char *defaultvalue = NULL );
|
||
|
const char *G_GetSpawnArg( const char *key, const char *defaultvalue = NULL );
|
||
|
|
||
|
void G_InitSpawnArguments( void );
|
||
|
int G_GetNumSpawnArgs( void );
|
||
|
|
||
|
void G_InitClientPersistant( gclient_t *client );
|
||
|
void G_InitClientResp( gclient_t *client );
|
||
|
|
||
|
ClassDef *G_GetClassFromArgs( void );
|
||
|
Entity *G_CallSpawn( void );
|
||
|
const char *G_ParseEdict( const char *data, edict_t *ent);
|
||
|
void G_FindTeams( void );
|
||
|
|
||
|
void G_LevelShutdown( void );
|
||
|
void G_ResetEdicts( void );
|
||
|
void G_MapInit( const char *mapname );
|
||
|
void G_LevelStart( void );
|
||
|
void G_Precache( void );
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
EXPORT_FROM_DLL void G_SpawnEntities( const char *mapname, const char *entities, const char *spawnpoint );
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|