Tried, failed. I give up
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user