diff options
Diffstat (limited to 'src/game/server/game_server.h')
| -rw-r--r-- | src/game/server/game_server.h | 310 |
1 files changed, 0 insertions, 310 deletions
diff --git a/src/game/server/game_server.h b/src/game/server/game_server.h index 22cc1f93..8b137891 100644 --- a/src/game/server/game_server.h +++ b/src/game/server/game_server.h @@ -1,311 +1 @@ -// -class event_handler -{ - static const int MAX_EVENTS = 128; - static const int MAX_DATASIZE = 128*4; - - int types[MAX_EVENTS]; // TODO: remove some of these arrays - int offsets[MAX_EVENTS]; - int sizes[MAX_EVENTS]; - int targets[MAX_EVENTS]; - char data[MAX_DATASIZE]; - - int current_offset; - int num_events; -public: - event_handler(); - void *create(int type, int size, int target = -1); - void clear(); - void snap(int snapping_client); -}; - -extern event_handler events; - -// a basic entity -class entity -{ -private: - friend class game_world; - friend class player; - entity *prev_entity; - entity *next_entity; - - entity *prev_type_entity; - entity *next_type_entity; - - int index; -protected: - int id; - -public: - float proximity_radius; - unsigned flags; - int objtype; - vec2 pos; - - enum - { - FLAG_DESTROY=0x00000001, - FLAG_ALIVE=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 game_world -{ - 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; - - game_world(); - 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 game_world *world; - -// game object -class gameobject : public entity -{ - void resetgame(); - void startround(); - void endround(); - - int round_start_tick; - int game_over_tick; - int sudden_death; - -public: - class flag *flags[2]; - - int gametype; - gameobject(); - virtual void post_reset(); - virtual void tick(); - virtual void tick_dm(); - virtual void tick_tdm(); - virtual void tick_ctf(); - - virtual void on_player_spawn(class player *p); - virtual void on_player_death(class player *victim, class player *killer, int weapon); - - virtual void snap(int snapping_client); - virtual int getteam(int notthisid); -}; - -extern gameobject *gameobj; - - -// TODO: move to seperate file -class powerup : public entity -{ -public: - static const int phys_size = 14; - - int type; - int subtype; // weapon type for instance? - int spawntick; - powerup(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, - - WEAPON_PROJECTILETYPE_GUN = 0, - WEAPON_PROJECTILETYPE_ROCKET = 1, - WEAPON_PROJECTILETYPE_SHOTGUN = 2, - }; - - vec2 vel; - 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; - - projectile(int type, int owner, vec2 pos, vec2 vel, int span, entity* powner, - int damage, int flags, float force, int sound_impact, int weapon); - 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; - - enum // what are these? - { - MODIFIER_RETURNFLAGS_OVERRIDEVELOCITY = 1 << 0, - MODIFIER_RETURNFLAGS_OVERRIDEPOSITION = 1 << 1, - MODIFIER_RETURNFLAGS_OVERRIDEGRAVITY = 1 << 2, - }; - - // 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 reload_timer; - int attack_tick; - - int damage_taken; - - int emote_type; - int emote_stop; - - int last_action; - - // - int client_id; - char name[64]; - - // input - player_input previnput; - player_input input; - int jumped; - - int damage_taken_tick; - - int health; - int armor; - - // ninja - vec2 activationdir; - int ninjaactivationtick; - int extrapowerflags; - int currentcooldown; - int currentactivation; - int currentmovetime; - - // - int score; - int team; - int state; - - bool spawning; - bool dead; - int die_tick; - - // 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; - - // - player(); - void init(); - virtual void reset(); - virtual void destroy(); - - void try_respawn(); - void respawn(); - - bool is_grounded(); - - void set_weapon(int w); - - int handle_weapons(); - int handle_ninja(); - - 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; - -// TODO: move to seperate file -class flag : public entity -{ -public: - static const int phys_size = 14; - player *carrying_player; - vec2 vel; - vec2 stand_pos; - - int team; - int spawntick; - int at_stand; - - flag(int _team); - - bool is_grounded(); - - virtual void reset(); - virtual void tick(); - virtual void snap(int snapping_client); -}; |