mirror of
https://github.com/UberGames/EF2GameSource.git
synced 2024-11-27 13:42:00 +00:00
190 lines
5.9 KiB
C++
190 lines
5.9 KiB
C++
//-----------------------------------------------------------------------------
|
|
//
|
|
// $Logfile:: /Code/DLLs/game/g_local.h $
|
|
// $Revision:: 20 $
|
|
// $Author:: Steven $
|
|
// $Date:: 10/13/03 8:54a $
|
|
//
|
|
// 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.
|
|
//
|
|
//
|
|
// DESCRIPTION:
|
|
// local definitions for game module
|
|
//
|
|
|
|
#ifndef __G_LOCAL_H__
|
|
#define __G_LOCAL_H__
|
|
|
|
#include "q_shared.h"
|
|
|
|
// define GAME_INCLUDE so that game.h does not define the
|
|
// short, server-visible gclient_t and gentity_t structures,
|
|
// because we define the full size ones in this file
|
|
#define GAME_INCLUDE
|
|
#include "g_public.h"
|
|
#include "bg_public.h"
|
|
#include "container.h"
|
|
#include "str.h"
|
|
|
|
// times for posting events
|
|
// Even though negative times technically don't make sense, the effect is to
|
|
// sort events that take place at the start of a map so that they are executed
|
|
// in the proper order. For example, spawnargs must occur before any script
|
|
// commands take place, while unused entities must be removed before the spawnargs
|
|
// are parsed.
|
|
|
|
#define EV_REMOVE -12.0f // remove any unused entities before spawnargs are parsed
|
|
#define EV_PRIORITY_SPAWNARG -11.0f // for priority spawn args passed in by the bsp file
|
|
#define EV_SPAWNARG -10.0f // for spawn args passed in by the bsp file
|
|
#define EV_LINKDOORS -9.0f // for finding out which doors are linked together
|
|
#define EV_LINKBEAMS -9.0f // for finding out the endpoints of beams
|
|
#define EV_SETUP_ROPEPIECE -8.0f
|
|
#define EV_SETUP_ROPEBASE -7.0f
|
|
#define EV_PROCESS_INIT -6.0f
|
|
|
|
#define EV_POSTSPAWN -1.0f // for any processing that must occur after all objects are spawned
|
|
|
|
#define SOUND_RADIUS 1500.0f // Sound travel distance for AI
|
|
|
|
#define random() ((rand () & 0x7fff) / ((float)0x7fff))
|
|
#define crandom() (2.0f * (random() - 0.5f))
|
|
|
|
// predefine Entity so that we can add it to gentity_t without any errors
|
|
class Entity;
|
|
|
|
#define MAX_NETNAME 36
|
|
|
|
// client data that stays across multiple level loads
|
|
typedef struct
|
|
{
|
|
char userinfo[MAX_INFO_STRING];
|
|
char netname[MAX_NETNAME];
|
|
char mp_playermodel[MAX_QPATH];
|
|
char dm_morph_c1[MAX_INFO_STRING];
|
|
//char lastTeam[ 16 ];
|
|
float enterTime;
|
|
|
|
qboolean mp_lowBandwidth;
|
|
//qboolean mp_savingDemo;
|
|
//float userFov;
|
|
|
|
// values saved and restored from edicts when changing levels
|
|
int health;
|
|
int max_health;
|
|
|
|
} client_persistant_t;
|
|
|
|
// this structure is cleared on each PutClientInServer(),
|
|
// except for 'client->pers'
|
|
typedef struct gclient_s
|
|
{
|
|
// known to server
|
|
playerState_t ps; // communicated by server to clients
|
|
int ping;
|
|
|
|
// private to game
|
|
client_persistant_t pers;
|
|
vec3_t cmd_angles; // angles sent over in the last command
|
|
} gclient_t;
|
|
|
|
struct gentity_s
|
|
{
|
|
entityState_t s; // communicated by server to clients
|
|
struct gclient_s *client; // NULL if not a player
|
|
qboolean inuse;
|
|
qboolean linked; // qfalse if not in any good cluster
|
|
int linkcount;
|
|
|
|
int svflags; // SVF_NOCLIENT, SVF_BROADCAST, etc
|
|
|
|
qboolean bmodel; // if false, assume an explicit mins / maxs bounding box
|
|
// only set by gi.SetBrushModel
|
|
vec3_t mins, maxs;
|
|
int contents; // CONTENTS_TRIGGER, CONTENTS_SOLID, CONTENTS_BODY, etc
|
|
// a non-solid entity should set to 0
|
|
|
|
vec3_t absmin, absmax; // derived from mins/maxs and origin + rotation
|
|
|
|
float radius; // radius of object
|
|
vec3_t centroid; // centroid, to be used with radius
|
|
int areanum; // areanum needs to be seen inside the game as well
|
|
|
|
// currentOrigin will be used for all collision detection and world linking.
|
|
// it will not necessarily be the same as the trajectory evaluation for the current
|
|
// time, because each entity must be moved one at a time after time is advanced
|
|
// to avoid simultanious collision issues
|
|
vec3_t currentOrigin;
|
|
vec3_t currentAngles;
|
|
|
|
int ownerNum; // objects never interact with their owners, to
|
|
// prevent player missiles from immediately
|
|
// colliding with their owner
|
|
|
|
solid_t solid; // Added for FAKK2
|
|
|
|
// DO NOT MODIFY ANYTHING ABOVE THIS, THE SERVER
|
|
// EXPECTS THE FIELDS IN THAT ORDER!
|
|
|
|
//================================
|
|
|
|
Entity *entity;
|
|
float freetime; // svs.time when the object was freed
|
|
float spawntime; // svs.time when the object was spawned
|
|
|
|
float radius2; // squared radius of object. Used in findradius in g_utils.cpp
|
|
|
|
char entname[ 64 ];
|
|
|
|
// GAMEFIX Moved some of the old fields here for the game code. These
|
|
// might still be needed or might not :-)
|
|
int clipmask;
|
|
|
|
gentity_t *next;
|
|
gentity_t *prev;
|
|
};
|
|
|
|
typedef enum
|
|
{
|
|
legs,
|
|
torso,
|
|
all
|
|
} bodypart_t;
|
|
|
|
//bot settings from i
|
|
typedef struct bot_settings_s
|
|
{
|
|
char characterfile[MAX_QPATH];
|
|
float skill;
|
|
char team[MAX_QPATH];
|
|
} bot_settings_t;
|
|
|
|
// for bot chats
|
|
#define SAY_ALL 0
|
|
#define SAY_TEAM 1
|
|
#define SAY_TELL 2
|
|
|
|
typedef enum
|
|
{
|
|
MP_ITEM_TYPE_NORMAL,
|
|
MP_ITEM_TYPE_POWERUP,
|
|
MP_ITEM_TYPE_RUNE,
|
|
MP_ITEM_TYPE_WEAPON,
|
|
MP_ITEM_TYPE_ARMOR
|
|
} MultiplayerItemType;
|
|
|
|
#include "vector.h"
|
|
#include "Linklist.h"
|
|
#include "class.h"
|
|
#include "game.h"
|
|
#include "g_main.h"
|
|
#include "listener.h"
|
|
#include "g_utils.h"
|
|
#include "g_spawn.h"
|
|
#include "g_phys.h"
|
|
#include "debuglines.h"
|
|
|
|
#endif // __G_LOCAL_H__
|