Tried, failed. I give up
This commit is contained in:
@@ -61,7 +61,6 @@ public:
|
||||
//gameplay
|
||||
Statistics* GetStatistics() { return &stats; }
|
||||
|
||||
protected:
|
||||
virtual void Serialize(void* buffer) override;
|
||||
virtual void Deserialize(void* buffer) override;
|
||||
|
||||
|
||||
@@ -41,7 +41,6 @@ public:
|
||||
int GetAccountIndex() { return accountIndex; }
|
||||
const char* GetUsername() { return username; }
|
||||
|
||||
protected:
|
||||
virtual void Serialize(void* buffer) override;
|
||||
virtual void Deserialize(void* buffer) override;
|
||||
|
||||
|
||||
@@ -52,7 +52,6 @@ public:
|
||||
Region* SetRegion(Region* r) { return region = r; }
|
||||
Region* GetRegion() { return region; }
|
||||
|
||||
protected:
|
||||
virtual void Serialize(void* buffer) override;
|
||||
virtual void Deserialize(void* buffer) override;
|
||||
|
||||
|
||||
@@ -37,15 +37,15 @@ public:
|
||||
IPaddress GetAddress() { return srcAddress; }
|
||||
IPaddress* GetAddressPtr() { return &srcAddress; }
|
||||
|
||||
protected:
|
||||
friend class UDPNetworkUtility;
|
||||
|
||||
SerialPacketBase() {};
|
||||
virtual ~SerialPacketBase() {};
|
||||
|
||||
virtual void Serialize(void* buffer) = 0;
|
||||
virtual void Deserialize(void* buffer) = 0;
|
||||
|
||||
protected:
|
||||
friend class UDPNetworkUtility;
|
||||
|
||||
SerialPacketType type;
|
||||
IPaddress srcAddress;
|
||||
};
|
||||
|
||||
@@ -40,7 +40,6 @@ public:
|
||||
int GetPlayerCount() { return playerCount; }
|
||||
int GetVersion() { return version; }
|
||||
|
||||
protected:
|
||||
virtual void Serialize(void* buffer) override;
|
||||
virtual void Deserialize(void* buffer) override;
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
typedef SerialPacketBase SerialPacket;
|
||||
|
||||
//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
|
||||
union _MaxPacket {
|
||||
|
||||
@@ -22,89 +22,74 @@
|
||||
#ifndef SERIALPACKETTYPE_HPP_
|
||||
#define SERIALPACKETTYPE_HPP_
|
||||
|
||||
/* Key for the comments:
|
||||
* request => response
|
||||
/* DOCS: The headers indicate what packet type is used for each message
|
||||
* 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 {
|
||||
//default: there is something wrong
|
||||
NONE = 0,
|
||||
|
||||
//-------------------------
|
||||
//ServerPacket
|
||||
// name, player count, version
|
||||
//-------------------------
|
||||
|
||||
//heartbeat
|
||||
//ping => pong
|
||||
PING = 1,
|
||||
PONG = 2,
|
||||
PING,
|
||||
PONG,
|
||||
|
||||
//search for the server list
|
||||
//none => server name, player count, version info (and source address)
|
||||
BROADCAST_REQUEST = 3,
|
||||
BROADCAST_RESPONSE = 4,
|
||||
//Used for finding available servers
|
||||
BROADCAST_REQUEST,
|
||||
BROADCAST_RESPONSE,
|
||||
|
||||
//try to join the server
|
||||
//username, and password => client index, account index
|
||||
JOIN_REQUEST = 5,
|
||||
JOIN_RESPONSE = 6,
|
||||
JOIN_REJECTION = 7,
|
||||
//-------------------------
|
||||
//ClientPacket
|
||||
// client index, account index, character index
|
||||
//-------------------------
|
||||
|
||||
//mass update of all surrounding content
|
||||
//character.x, character.y => packet barrage
|
||||
SYNCHRONIZE = 8,
|
||||
//Connecting to a server as a client
|
||||
JOIN_REQUEST,
|
||||
JOIN_RESPONSE,
|
||||
JOIN_REJECTION,
|
||||
|
||||
//client requests all information from the server
|
||||
SYNCHRONIZE,
|
||||
|
||||
//disconnect from the server
|
||||
//autentication, account index => disconnect that account
|
||||
DISCONNECT = 9,
|
||||
DISCONNECT,
|
||||
|
||||
//shut down the server
|
||||
//autentication => disconnect, shutdown
|
||||
SHUTDOWN = 10,
|
||||
SHUTDOWN,
|
||||
|
||||
//-------------------------
|
||||
//RegionPacket
|
||||
// room index, x, y, raw data
|
||||
//-------------------------
|
||||
|
||||
//map data
|
||||
//room index, region.x, region.y => room index, region.x, region.y, region content
|
||||
REGION_REQUEST = 11,
|
||||
REGION_CONTENT = 12,
|
||||
REGION_REQUEST,
|
||||
REGION_CONTENT,
|
||||
|
||||
//combat data
|
||||
//TODO: system incomplete
|
||||
COMBAT_NEW = 13,
|
||||
COMBAT_DELETE = 14,
|
||||
COMBAT_UPDATE = 15,
|
||||
//-------------------------
|
||||
//CharacterPacket
|
||||
// handle, avatar, character index, account index,
|
||||
// room index, origin, motion
|
||||
// statistics
|
||||
//-------------------------
|
||||
|
||||
COMBAT_ENTER_REQUEST = 16,
|
||||
COMBAT_ENTER_RESPONSE = 17,
|
||||
|
||||
COMBAT_EXIT_REQUEST = 18,
|
||||
COMBAT_EXIT_RESPONSE = 19,
|
||||
|
||||
//TODO: COMBAT info
|
||||
|
||||
COMBAT_REJECTION = 20,
|
||||
|
||||
//character data
|
||||
//character data => etc.
|
||||
CHARACTER_NEW = 21,
|
||||
CHARACTER_DELETE = 22,
|
||||
CHARACTER_UPDATE = 23,
|
||||
//controlling characters
|
||||
CHARACTER_NEW,
|
||||
CHARACTER_DELETE,
|
||||
CHARACTER_UPDATE,
|
||||
|
||||
//authentication, character index => character stats
|
||||
CHARACTER_STATS_REQUEST= 24,
|
||||
CHARACTER_STATS_RESPONSE = 25,
|
||||
CHARACTER_STATS_REQUEST,
|
||||
CHARACTER_STATS_RESPONSE,
|
||||
|
||||
//character new => character rejection, disconnect?
|
||||
CHARACTER_REJECTION = 26,
|
||||
|
||||
//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
|
||||
//reject a character request
|
||||
CHARACTER_REJECTION,
|
||||
|
||||
//not used
|
||||
LAST
|
||||
|
||||
@@ -23,11 +23,41 @@
|
||||
|
||||
#include "serial_packet_type.hpp"
|
||||
|
||||
#include "server_packet.hpp"
|
||||
#include "client_packet.hpp"
|
||||
#include "region_packet.hpp"
|
||||
#include "character_packet.hpp"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
void serializePacket(SerialPacketBase* packet, void* data) {
|
||||
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));
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user