gremlin/src/network.h

96 lines
1.9 KiB
C

/*
* network.h
*
* Created on: 12.01.2011
* Author: gmueller
*/
#ifndef NETWORK_H_
#define NETWORK_H_
#include "game.h"
#include "common.h"
#define MESSAGE_PLAYER_SPAWN 0
#define MESSAGE_PLAYER_KILL 1
#define MESSAGE_ACCEPT 2
#define MESSAGE_PLAYER_UPDATE 3
#define MESSAGE_PLAYER_ACCELERATE 4
#define MESSAGE_BOMB_DROP 5
#define MESSAGE_BOMB_UPDATE 6
#define MESSAGE_POINT_UPDATE 7
#define MESSAGE_TEAM_UPDATE 8
typedef struct message_t {
uint16_t msg_id;
} message_t;
typedef struct player_spawn_message_t {
uint16_t msg_id;
uint8_t team_id;
uint16_t player_id;
} player_spawn_message_t;
typedef struct player_kill_message_t {
uint16_t msg_id;
uint16_t player_id;
} player_kill_message_t;
typedef struct accept_message_t {
uint16_t msg_id;
uint16_t player_id;
} accept_message_t;
typedef struct player_update_message_t {
uint16_t msg_id;
uint16_t player_id;
unsigned int session;
double x, y, z;
double vx, vy, vz;
uint16_t points;
} player_update_message_t;
typedef struct player_accelerate_message_t {
uint16_t msg_id;
uint16_t player_id;
double x, y, z;
} player_accelerate_message_t;
typedef struct bomb_drop_meesage_t {
uint16_t msg_id;
double x, y, z;
double vx, vy, vz;
double ttl;
} bomb_drop_meesage_t;
typedef struct bomb_update_meesage_t {
uint16_t msg_id;
uint16_t bomb_index;
double x, y, z;
double vx, vy, vz;
double ttl;
} bomb_update_meesage_t;
typedef struct point_update_mesage_t {
uint16_t msg_id;
uint16_t point_index;
uint8_t status;
double x, y, z;
} point_update_meesage_t;
struct team_update_message_t {
uint16_t msg_id;
uint16_t team_id;
uint16_t points;
uint16_t wins;
};
void setup_network(const char *remote);
void shutdown_network();
void dispatch_message(uint8_t *data, size_t length, game_t *game);
void service_network(game_t *game);
void send_game_updates(game_t *game);
void send_message(uint8_t *data, size_t length, game_t *game);
#endif /* NETWORK_H_ */