Tried, failed. I give up

This commit is contained in:
Kayne Ruse
2014-08-31 04:29:40 +10:00
parent 7d4d7817f2
commit 59963a05f3
8 changed files with 108 additions and 72 deletions
@@ -61,7 +61,6 @@ public:
//gameplay //gameplay
Statistics* GetStatistics() { return &stats; } Statistics* GetStatistics() { return &stats; }
protected:
virtual void Serialize(void* buffer) override; virtual void Serialize(void* buffer) override;
virtual void Deserialize(void* buffer) override; virtual void Deserialize(void* buffer) override;
@@ -41,7 +41,6 @@ public:
int GetAccountIndex() { return accountIndex; } int GetAccountIndex() { return accountIndex; }
const char* GetUsername() { return username; } const char* GetUsername() { return username; }
protected:
virtual void Serialize(void* buffer) override; virtual void Serialize(void* buffer) override;
virtual void Deserialize(void* buffer) override; virtual void Deserialize(void* buffer) override;
@@ -52,7 +52,6 @@ public:
Region* SetRegion(Region* r) { return region = r; } Region* SetRegion(Region* r) { return region = r; }
Region* GetRegion() { return region; } Region* GetRegion() { return region; }
protected:
virtual void Serialize(void* buffer) override; virtual void Serialize(void* buffer) override;
virtual void Deserialize(void* buffer) override; virtual void Deserialize(void* buffer) override;
@@ -37,15 +37,15 @@ public:
IPaddress GetAddress() { return srcAddress; } IPaddress GetAddress() { return srcAddress; }
IPaddress* GetAddressPtr() { return &srcAddress; } IPaddress* GetAddressPtr() { return &srcAddress; }
protected:
friend class UDPNetworkUtility;
SerialPacketBase() {}; SerialPacketBase() {};
virtual ~SerialPacketBase() {}; virtual ~SerialPacketBase() {};
virtual void Serialize(void* buffer) = 0; virtual void Serialize(void* buffer) = 0;
virtual void Deserialize(void* buffer) = 0; virtual void Deserialize(void* buffer) = 0;
protected:
friend class UDPNetworkUtility;
SerialPacketType type; SerialPacketType type;
IPaddress srcAddress; IPaddress srcAddress;
}; };
@@ -40,7 +40,6 @@ public:
int GetPlayerCount() { return playerCount; } int GetPlayerCount() { return playerCount; }
int GetVersion() { return version; } int GetVersion() { return version; }
protected:
virtual void Serialize(void* buffer) override; virtual void Serialize(void* buffer) override;
virtual void Deserialize(void* buffer) override; virtual void Deserialize(void* buffer) override;
+1 -1
View File
@@ -36,7 +36,7 @@
typedef SerialPacketBase SerialPacket; typedef SerialPacketBase SerialPacket;
//DOCS: NETWORK_VERSION is used to discern compatible servers and clients //DOCS: NETWORK_VERSION is used to discern compatible servers and clients
constexpr int NETWORK_VERSION = 20140827; constexpr int NETWORK_VERSION = 20140831;
//_MaxPacket Should not be used //_MaxPacket Should not be used
union _MaxPacket { union _MaxPacket {
+47 -62
View File
@@ -22,89 +22,74 @@
#ifndef SERIALPACKETTYPE_HPP_ #ifndef SERIALPACKETTYPE_HPP_
#define SERIALPACKETTYPE_HPP_ #define SERIALPACKETTYPE_HPP_
/* Key for the comments: /* DOCS: The headers indicate what packet type is used for each message
* request => response * different messages under the same header will carry different amounts of
* valid data, but it will still be carried in that packet's format.
*/ */
enum class SerialPacketType { enum class SerialPacketType {
//default: there is something wrong //default: there is something wrong
NONE = 0, NONE = 0,
//-------------------------
//ServerPacket
// name, player count, version
//-------------------------
//heartbeat //heartbeat
//ping => pong PING,
PING = 1, PONG,
PONG = 2,
//search for the server list //Used for finding available servers
//none => server name, player count, version info (and source address) BROADCAST_REQUEST,
BROADCAST_REQUEST = 3, BROADCAST_RESPONSE,
BROADCAST_RESPONSE = 4,
//try to join the server //-------------------------
//username, and password => client index, account index //ClientPacket
JOIN_REQUEST = 5, // client index, account index, character index
JOIN_RESPONSE = 6, //-------------------------
JOIN_REJECTION = 7,
//mass update of all surrounding content //Connecting to a server as a client
//character.x, character.y => packet barrage JOIN_REQUEST,
SYNCHRONIZE = 8, JOIN_RESPONSE,
JOIN_REJECTION,
//client requests all information from the server
SYNCHRONIZE,
//disconnect from the server //disconnect from the server
//autentication, account index => disconnect that account DISCONNECT,
DISCONNECT = 9,
//shut down the server //shut down the server
//autentication => disconnect, shutdown SHUTDOWN,
SHUTDOWN = 10,
//-------------------------
//RegionPacket
// room index, x, y, raw data
//-------------------------
//map data //map data
//room index, region.x, region.y => room index, region.x, region.y, region content REGION_REQUEST,
REGION_REQUEST = 11, REGION_CONTENT,
REGION_CONTENT = 12,
//combat data //-------------------------
//TODO: system incomplete //CharacterPacket
COMBAT_NEW = 13, // handle, avatar, character index, account index,
COMBAT_DELETE = 14, // room index, origin, motion
COMBAT_UPDATE = 15, // statistics
//-------------------------
COMBAT_ENTER_REQUEST = 16, //controlling characters
COMBAT_ENTER_RESPONSE = 17, CHARACTER_NEW,
CHARACTER_DELETE,
COMBAT_EXIT_REQUEST = 18, CHARACTER_UPDATE,
COMBAT_EXIT_RESPONSE = 19,
//TODO: COMBAT info
COMBAT_REJECTION = 20,
//character data
//character data => etc.
CHARACTER_NEW = 21,
CHARACTER_DELETE = 22,
CHARACTER_UPDATE = 23,
//authentication, character index => character stats //authentication, character index => character stats
CHARACTER_STATS_REQUEST= 24, CHARACTER_STATS_REQUEST,
CHARACTER_STATS_RESPONSE = 25, CHARACTER_STATS_RESPONSE,
//character new => character rejection, disconnect? //reject a character request
CHARACTER_REJECTION = 26, CHARACTER_REJECTION,
//enemy data
//enemy data => etc.
ENEMY_NEW = 27,
ENEMY_DELETE = 28,
ENEMY_UPDATE = 29,
ENEMY_STATS_REQUEST = 30,
ENEMY_STATS_RESPONSE = 31,
//enemy index => enemy doens't exist
ENEMY_REJECTION= 32,
//NOTE: more packet types go here
//not used //not used
LAST LAST
+57 -2
View File
@@ -23,11 +23,41 @@
#include "serial_packet_type.hpp" #include "serial_packet_type.hpp"
#include "server_packet.hpp"
#include "client_packet.hpp"
#include "region_packet.hpp"
#include "character_packet.hpp"
#include <cstring> #include <cstring>
void serializePacket(SerialPacketBase* packet, void* data) { void serializePacket(SerialPacketBase* packet, void* data) {
switch(packet->GetType()) { switch(packet->GetType()) {
//define all packet types case SerialPacketType::PING:
case SerialPacketType::PONG:
case SerialPacketType::BROADCAST_REQUEST:
case SerialPacketType::BROADCAST_RESPONSE:
static_cast<ServerPacket*>(packet)->Serialize(data);
break;
case SerialPacketType::JOIN_REQUEST:
case SerialPacketType::JOIN_RESPONSE:
case SerialPacketType::JOIN_REJECTION:
case SerialPacketType::SYNCHRONIZE:
case SerialPacketType::DISCONNECT:
case SerialPacketType::SHUTDOWN:
static_cast<ClientPacket*>(packet)->Serialize(data);
break;
case SerialPacketType::REGION_REQUEST:
case SerialPacketType::REGION_CONTENT:
static_cast<RegionPacket*>(packet)->Serialize(data);
break;
case SerialPacketType::CHARACTER_NEW:
case SerialPacketType::CHARACTER_DELETE:
case SerialPacketType::CHARACTER_UPDATE:
case SerialPacketType::CHARACTER_STATS_REQUEST:
case SerialPacketType::CHARACTER_STATS_RESPONSE:
case SerialPacketType::CHARACTER_REJECTION:
static_cast<CharacterPacket*>(packet)->Serialize(data);
break;
} }
} }
@@ -37,7 +67,32 @@ void deserializePacket(SerialPacketBase* packet, void* data) {
memcpy(&type, data, sizeof(SerialPacketType)); memcpy(&type, data, sizeof(SerialPacketType));
switch(type) { switch(type) {
//define all extra types case SerialPacketType::PING:
case SerialPacketType::PONG:
case SerialPacketType::BROADCAST_REQUEST:
case SerialPacketType::BROADCAST_RESPONSE:
static_cast<ServerPacket*>(packet)->Deserialize(data);
break;
case SerialPacketType::JOIN_REQUEST:
case SerialPacketType::JOIN_RESPONSE:
case SerialPacketType::JOIN_REJECTION:
case SerialPacketType::SYNCHRONIZE:
case SerialPacketType::DISCONNECT:
case SerialPacketType::SHUTDOWN:
static_cast<ClientPacket*>(packet)->Deserialize(data);
break;
case SerialPacketType::REGION_REQUEST:
case SerialPacketType::REGION_CONTENT:
static_cast<RegionPacket*>(packet)->Deserialize(data);
break;
case SerialPacketType::CHARACTER_NEW:
case SerialPacketType::CHARACTER_DELETE:
case SerialPacketType::CHARACTER_UPDATE:
case SerialPacketType::CHARACTER_STATS_REQUEST:
case SerialPacketType::CHARACTER_STATS_RESPONSE:
case SerialPacketType::CHARACTER_REJECTION:
static_cast<CharacterPacket*>(packet)->Deserialize(data);
break;
} }
} }