2011-01-12 22:05:22 +01:00
|
|
|
/*
|
|
|
|
* network.h
|
|
|
|
*
|
|
|
|
* Created on: 12.01.2011
|
|
|
|
* Author: gmueller
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef NETWORK_H_
|
|
|
|
#define NETWORK_H_
|
|
|
|
|
|
|
|
#include "game.h"
|
|
|
|
#include "common.h"
|
|
|
|
|
2011-01-16 23:02:40 +01:00
|
|
|
#include <enet/enet.h>
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
2011-01-12 22:05:22 +01:00
|
|
|
#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;
|
|
|
|
};
|
|
|
|
|
2011-01-16 23:02:40 +01:00
|
|
|
class Network {
|
|
|
|
public:
|
|
|
|
Network(game_t *game);
|
|
|
|
void initialize(const std::string &host);
|
|
|
|
void shutdown();
|
|
|
|
void dispatch(uint8_t *data, size_t length);
|
|
|
|
void service(uint32_t timeout);
|
|
|
|
void sendGameUpdates();
|
|
|
|
void sendMessage(uint8_t *data, size_t length);
|
|
|
|
protected:
|
|
|
|
game_t *game;
|
|
|
|
ENetHost *host;
|
|
|
|
ENetPeer *client_peer;
|
|
|
|
};
|
2011-01-12 22:05:22 +01:00
|
|
|
|
|
|
|
#endif /* NETWORK_H_ */
|