diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-06-12 12:09:34 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-06-12 12:09:34 +0000 |
| commit | 3705064b109580103a3d13f44693503da9927281 (patch) | |
| tree | 0de409d2c67e74866e2bbe0b53a3791c20dab80d /src/game/server/gs_common.h | |
| parent | f6c67c29cd10d41b877ee1319801edc01b625e72 (diff) | |
| download | zcatch-3705064b109580103a3d13f44693503da9927281.tar.gz zcatch-3705064b109580103a3d13f44693503da9927281.zip | |
renamed .h to .hpp in game because they are c++ headers
Diffstat (limited to 'src/game/server/gs_common.h')
| -rw-r--r-- | src/game/server/gs_common.h | 357 |
1 files changed, 0 insertions, 357 deletions
diff --git a/src/game/server/gs_common.h b/src/game/server/gs_common.h deleted file mode 100644 index 6b307cdf..00000000 --- a/src/game/server/gs_common.h +++ /dev/null @@ -1,357 +0,0 @@ -/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */ -#include "../g_game.h" -#include "../generated/gs_data.h" - - -extern TUNING_PARAMS tuning; - -void create_sound_global(int sound, int target=-1); - -inline int cmask_all() { return -1; } -inline int cmask_one(int cid) { return 1<<cid; } -inline int cmask_all_except_one(int cid) { return 0x7fffffff^cmask_one(cid); } -inline bool cmask_is_set(int mask, int cid) { return (mask&cmask_one(cid)) != 0; } - -// -class EVENT_HANDLER -{ - static const int MAX_EVENTS = 128; - static const int MAX_DATASIZE = 128*64; - - int types[MAX_EVENTS]; // TODO: remove some of these arrays - int offsets[MAX_EVENTS]; - int sizes[MAX_EVENTS]; - int client_masks[MAX_EVENTS]; - char data[MAX_DATASIZE]; - - int current_offset; - int num_events; -public: - EVENT_HANDLER(); - void *create(int type, int size, int mask = -1); - void clear(); - void snap(int snapping_client); -}; - -extern EVENT_HANDLER events; - -// a basic entity -class ENTITY -{ -private: - friend class GAMEWORLD; // thy these? - friend class PLAYER; - ENTITY *prev_entity; - ENTITY *next_entity; - - ENTITY *prev_type_entity; - ENTITY *next_type_entity; -protected: - int id; -public: - float proximity_radius; - unsigned flags; - int objtype; - vec2 pos; - - enum - { - FLAG_DESTROY=0x00000001, - FLAG_PHYSICS=0x00000002, - }; - - ENTITY(int objtype); - virtual ~ENTITY(); - - virtual void reset() {} - virtual void post_reset() {} - - void set_flag(unsigned flag) { flags |= flag; } - void clear_flag(unsigned flag) { flags &= ~flag; } - - virtual void destroy() { delete this; } - virtual void tick() {} - virtual void tick_defered() {} - - virtual void snap(int snapping_client) {} - - virtual bool take_damage(vec2 force, int dmg, int from, int weapon) { return true; } -}; - - -class GAMEWORLD -{ - void reset(); - void remove_entities(); -public: - enum - { - NUM_ENT_TYPES=10, // TODO: are more exact value perhaps? :) - }; - - // TODO: two lists seams kinda not good, shouldn't be needed - ENTITY *first_entity; - ENTITY *first_entity_types[NUM_ENT_TYPES]; - bool paused; - bool reset_requested; - - WORLD_CORE core; - - GAMEWORLD(); - ~GAMEWORLD(); - int find_entities(vec2 pos, float radius, ENTITY **ents, int max); - int find_entities(vec2 pos, float radius, ENTITY **ents, int max, const int* types, int maxtypes); - - void insert_entity(ENTITY *ent); - void destroy_entity(ENTITY *ent); - void remove_entity(ENTITY *ent); - - // - void snap(int snapping_client); - void tick(); -}; - -extern GAMEWORLD *world; - -// game object -// TODO: should change name of this one -class GAMECONTROLLER : public ENTITY -{ -protected: - void cyclemap(); - void resetgame(); - - int round_start_tick; - int game_over_tick; - int sudden_death; - - int teamscore[2]; - - int warmup; - int round_count; - - bool is_teamplay; - -public: - int gametype; - GAMECONTROLLER(); - - void do_team_score_wincheck(); - void do_player_score_wincheck(); - - void do_warmup(int seconds); - - void startround(); - void endround(); - - bool is_friendly_fire(int cid1, int cid2); - - virtual bool on_entity(int index, vec2 pos); - - virtual void post_reset(); - virtual void tick(); - - virtual void on_player_spawn(class PLAYER *p) {} - virtual int on_player_death(class PLAYER *victim, class PLAYER *killer, int weapon); - - virtual void on_player_info_change(class PLAYER *p); - - virtual void snap(int snapping_client); - virtual int get_auto_team(int notthisid); - virtual bool can_join_team(int team, int notthisid); - int clampteam(int team); -}; - -extern GAMECONTROLLER *gamecontroller; - - -// TODO: move to seperate file -class PICKUP : public ENTITY -{ -public: - static const int phys_size = 14; - - int type; - int subtype; // weapon type for instance? - int spawntick; - PICKUP(int _type, int _subtype = 0); - - virtual void reset(); - virtual void tick(); - virtual void snap(int snapping_client); -}; - -// projectile entity -class PROJECTILE : public ENTITY -{ -public: - enum - { - PROJECTILE_FLAGS_EXPLODE = 1 << 0, - }; - - vec2 direction; - ENTITY *powner; // this is nasty, could be removed when client quits - int lifespan; - int owner; - int type; - int flags; - int damage; - int sound_impact; - int weapon; - int bounce; - float force; - int start_tick; - - PROJECTILE(int type, int owner, vec2 pos, vec2 vel, int span, ENTITY* powner, - int damage, int flags, float force, int sound_impact, int weapon); - - vec2 get_pos(float time); - void fill_info(NETOBJ_PROJECTILE *proj); - - virtual void reset(); - virtual void tick(); - virtual void snap(int snapping_client); -}; - -class LASER : public ENTITY -{ - vec2 from; - vec2 dir; - float energy; - int bounces; - int eval_tick; - PLAYER *owner; - - bool hit_player(vec2 from, vec2 to); - void do_bounce(); - -public: - - LASER(vec2 pos, vec2 direction, float start_energy, PLAYER *owner); - - virtual void reset(); - virtual void tick(); - virtual void snap(int snapping_client); -}; - -// player entity -class PLAYER : public ENTITY -{ -public: - static const int phys_size = 28; - - // weapon info - ENTITY *hitobjects[10]; - int numobjectshit; - struct WEAPONSTAT - { - int ammoregenstart; - int ammo; - int ammocost; - bool got; - } weapons[NUM_WEAPONS]; - - int active_weapon; - int last_weapon; - int queued_weapon; - - int reload_timer; - int attack_tick; - - int damage_taken; - - int emote_type; - int emote_stop; - - int last_action; // last tick that the player took any action ie some input - - // - int client_id; - char skin_name[64]; - int use_custom_color; - int color_body; - int color_feet; - - // these are non-heldback inputs - NETOBJ_PLAYER_INPUT latest_previnput; - NETOBJ_PLAYER_INPUT latest_input; - - // input - NETOBJ_PLAYER_INPUT previnput; - NETOBJ_PLAYER_INPUT input; - int num_inputs; - int jumped; - - int damage_taken_tick; - - int health; - int armor; - - // ninja - struct - { - vec2 activationdir; - int activationtick; - int currentcooldown; - int currentmovetime; - } ninja; - - // - int score; - int team; - int player_state; // if the client is chatting, accessing a menu or so - - bool spawning; - bool dead; - int die_tick; - vec2 die_pos; - - // latency calculations - int latency_accum; - int latency_accum_min; - int latency_accum_max; - int latency_avg; - int latency_min; - int latency_max; - - // the player core for the physics - PLAYER_CORE core; - - // - int64 last_chat; - - // - PLAYER(); - void init(); - virtual void reset(); - virtual void destroy(); - - void try_respawn(); - void respawn(); - - void set_team(int team); - - bool is_grounded(); - - void set_weapon(int w); - - void handle_weaponswitch(); - void do_weaponswitch(); - - int handle_weapons(); - int handle_ninja(); - - void on_direct_input(NETOBJ_PLAYER_INPUT *input); - void fire_weapon(); - - virtual void tick(); - virtual void tick_defered(); - - void die(int killer, int weapon); - - virtual bool take_damage(vec2 force, int dmg, int from, int weapon); - virtual void snap(int snaping_client); -}; - -extern PLAYER *players; |