Updated networking

This commit is contained in:
2016-03-21 20:57:13 +11:00
parent c2197d5e71
commit 5f0cf826d4
5 changed files with 73 additions and 87 deletions
@@ -19,15 +19,15 @@
* 3. This notice may not be removed or altered from any source * 3. This notice may not be removed or altered from any source
* distribution. * distribution.
*/ */
#include "monster_packet.hpp" #include "creature_packet.hpp"
#include "serial_utility.hpp" #include "serial_utility.hpp"
void serializeMonster(void* buffer, MonsterPacket* packet) { void serializeCreature(void* buffer, CreaturePacket* packet) {
serialCopy(&buffer, &packet->type, sizeof(SerialPacketType)); serialCopy(&buffer, &packet->type, sizeof(SerialPacketType));
//identify the monster //identify the creature
serialCopy(&buffer, &packet->monsterIndex, sizeof(int)); serialCopy(&buffer, &packet->creatureIndex, sizeof(int));
serialCopy(&buffer, packet->handle, PACKET_STRING_SIZE); serialCopy(&buffer, packet->handle, PACKET_STRING_SIZE);
serialCopy(&buffer, packet->avatar, PACKET_STRING_SIZE); serialCopy(&buffer, packet->avatar, PACKET_STRING_SIZE);
@@ -46,11 +46,11 @@ void serializeMonster(void* buffer, MonsterPacket* packet) {
serialCopy(&buffer, &packet->motion.y, sizeof(double)); serialCopy(&buffer, &packet->motion.y, sizeof(double));
} }
void deserializeMonster(void* buffer, MonsterPacket* packet) { void deserializeCreature(void* buffer, CreaturePacket* packet) {
deserialCopy(&buffer, &packet->type, sizeof(SerialPacketType)); deserialCopy(&buffer, &packet->type, sizeof(SerialPacketType));
//identify the monster //identify the creature
deserialCopy(&buffer, &packet->monsterIndex, sizeof(int)); deserialCopy(&buffer, &packet->creatureIndex, sizeof(int));
deserialCopy(&buffer, packet->handle, PACKET_STRING_SIZE); deserialCopy(&buffer, packet->handle, PACKET_STRING_SIZE);
deserialCopy(&buffer, packet->avatar, PACKET_STRING_SIZE); deserialCopy(&buffer, packet->avatar, PACKET_STRING_SIZE);
@@ -26,9 +26,9 @@
#include "bounding_box.hpp" #include "bounding_box.hpp"
#include "vector2.hpp" #include "vector2.hpp"
struct MonsterPacket : SerialPacketBase { struct CreaturePacket : SerialPacketBase {
//identify the monster //identify the creature
int monsterIndex; int creatureIndex;
char handle[PACKET_STRING_SIZE]; char handle[PACKET_STRING_SIZE];
char avatar[PACKET_STRING_SIZE]; char avatar[PACKET_STRING_SIZE];
BoundingBox bounds; BoundingBox bounds;
@@ -39,5 +39,5 @@ struct MonsterPacket : SerialPacketBase {
Vector2 motion; Vector2 motion;
}; };
void serializeMonster(void* buffer, MonsterPacket* packet); void serializeCreature(void* buffer, CreaturePacket* packet);
void deserializeMonster(void* buffer, MonsterPacket* packet); void deserializeCreature(void* buffer, CreaturePacket* packet);
+3 -3
View File
@@ -24,7 +24,7 @@
#include "serial_packet_base.hpp" #include "serial_packet_base.hpp"
#include "character_packet.hpp" #include "character_packet.hpp"
#include "client_packet.hpp" #include "client_packet.hpp"
#include "monster_packet.hpp" #include "creature_packet.hpp"
#include "region_packet.hpp" #include "region_packet.hpp"
#include "server_packet.hpp" #include "server_packet.hpp"
#include "text_packet.hpp" #include "text_packet.hpp"
@@ -33,12 +33,12 @@
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 = 20160316; constexpr int NETWORK_VERSION = 20160321;
union MaxPacket { union MaxPacket {
CharacterPacket a; CharacterPacket a;
ClientPacket b; ClientPacket b;
MonsterPacket c; CreaturePacket c;
RegionPacket d; RegionPacket d;
ServerPacket e; ServerPacket e;
TextPacket f; TextPacket f;
+53 -67
View File
@@ -29,66 +29,66 @@
enum class SerialPacketType { enum class SerialPacketType {
//default: there is something wrong //default: there is something wrong
NONE, NONE = 0,
//------------------------- //-------------------------
//ServerPacket //ServerPacket
// name, player count, version // name, player count, version
//------------------------- //-------------------------
FORMAT_SERVER, FORMAT_SERVER = 100,
//heartbeat //heartbeat
PING, PING = 101,
PONG, PONG = 102,
//Used for finding available servers //Used for finding available servers
BROADCAST_REQUEST, BROADCAST_REQUEST = 103,
BROADCAST_RESPONSE, BROADCAST_RESPONSE = 104,
FORMAT_END_SERVER, FORMAT_END_SERVER = 199,
//------------------------- //-------------------------
//ClientPacket //ClientPacket
// client index, account index, username // client index, account index, username
//------------------------- //-------------------------
FORMAT_CLIENT, FORMAT_CLIENT = 200,
//Connecting to a server as a client //Connecting to a server as a client
JOIN_REQUEST, JOIN_REQUEST = 201,
JOIN_RESPONSE, JOIN_RESPONSE = 202,
//disconnect from the server //disconnect from the server
DISCONNECT_REQUEST, DISCONNECT_REQUEST = 203,
DISCONNECT_RESPONSE, DISCONNECT_RESPONSE = 204,
ADMIN_DISCONNECT_FORCED, ADMIN_DISCONNECT_FORCED = 205,
//load the account //load the account
LOGIN_REQUEST, LOGIN_REQUEST = 206,
LOGIN_RESPONSE, LOGIN_RESPONSE = 207,
//unload the account //unload the account
LOGOUT_REQUEST, LOGOUT_REQUEST = 208,
LOGOUT_RESPONSE, LOGOUT_RESPONSE = 209,
//shut down the server //shut down the server
ADMIN_SHUTDOWN_REQUEST, ADMIN_SHUTDOWN_REQUEST = 210,
FORMAT_END_CLIENT, FORMAT_END_CLIENT = 299,
//------------------------- //-------------------------
//RegionPacket //RegionPacket
// room index, x, y, raw data // room index, x, y, raw data
//------------------------- //-------------------------
FORMAT_REGION, FORMAT_REGION = 300,
//map data //map data
REGION_REQUEST, REGION_REQUEST = 301,
REGION_CONTENT, REGION_CONTENT = 302,
FORMAT_END_REGION, FORMAT_END_REGION = 399,
//------------------------- //-------------------------
//CharacterPacket //CharacterPacket
@@ -98,87 +98,73 @@ enum class SerialPacketType {
// room index, origin, motion // room index, origin, motion
//------------------------- //-------------------------
FORMAT_CHARACTER, FORMAT_CHARACTER = 400,
//full data update //full data update
CHARACTER_UPDATE, CHARACTER_UPDATE = 401,
//character management //character management
CHARACTER_CREATE, CHARACTER_CREATE = 402,
CHARACTER_DELETE, CHARACTER_DELETE = 403,
CHARACTER_LOAD, CHARACTER_LOAD = 404,
CHARACTER_UNLOAD, CHARACTER_UNLOAD = 405,
//find out info from the server //find out info from the server
QUERY_CHARACTER_EXISTS, QUERY_CHARACTER_EXISTS = 406,
QUERY_CHARACTER_STATS,
QUERY_CHARACTER_LOCATION,
//actions taken //actions taken
CHARACTER_MOVEMENT, CHARACTER_MOVEMENT = 407,
CHARACTER_ATTACK,
CHARACTER_DAMAGE,
//admin control FORMAT_END_CHARACTER = 499,
// ADMIN_SET_CHARACTER_ORIGIN,
FORMAT_END_CHARACTER,
//------------------------- //-------------------------
//MonsterPacket //CreaturePacket
// monster index, // creature index,
// handle, avatar // handle, avatar
// bounds // bounds
// room index, origin, motion // room index, origin, motion
//------------------------- //-------------------------
FORMAT_MONSTER, FORMAT_CREATURE = 500,
//full data update //full data update
MONSTER_UPDATE, CREATURE_UPDATE = 501,
//character management //character management
MONSTER_CREATE, CREATURE_CREATE = 502,
MONSTER_DELETE, CREATURE_UNLOAD = 503,
//find out info from the server
QUERY_MONSTER_EXISTS,
QUERY_MONSTER_STATS,
QUERY_MONSTER_LOCATION,
//actions taken //actions taken
MONSTER_MOVEMENT, CREATURE_MOVEMENT = 504,
MONSTER_ATTACK,
MONSTER_DAMAGE,
FORMAT_END_MONSTER, FORMAT_END_CREATURE = 599,
//------------------------- //-------------------------
//TextPacket //TextPacket
// name, text // name, text
//------------------------- //-------------------------
FORMAT_TEXT, FORMAT_TEXT = 600,
//general speech //general speech
TEXT_BROADCAST, TEXT_BROADCAST = 601,
TEXT_SPEECH, TEXT_SPEECH = 602,
TEXT_WHISPER, TEXT_WHISPER = 603,
//rejection/error messages //rejection/error messages
JOIN_REJECTION, JOIN_REJECTION = 604,
LOGIN_REJECTION, LOGIN_REJECTION = 605,
REGION_REJECTION, REGION_REJECTION = 606,
CHARACTER_REJECTION, CHARACTER_REJECTION = 607,
MONSTER_REJECTION, CREATURE_REJECTION = 608,
SHUTDOWN_REJECTION, SHUTDOWN_REJECTION = 609,
QUERY_REJECTION, QUERY_REJECTION = 610,
FORMAT_END_TEXT, FORMAT_END_TEXT = 699,
//------------------------- //-------------------------
//not used //not used
//------------------------- //-------------------------
LAST LAST = 700
}; };
+5 -5
View File
@@ -24,7 +24,7 @@
//packet types //packet types
#include "character_packet.hpp" #include "character_packet.hpp"
#include "client_packet.hpp" #include "client_packet.hpp"
#include "monster_packet.hpp" #include "creature_packet.hpp"
#include "region_packet.hpp" #include "region_packet.hpp"
#include "server_packet.hpp" #include "server_packet.hpp"
#include "text_packet.hpp" #include "text_packet.hpp"
@@ -65,8 +65,8 @@ void serializePacket(void* buffer, SerialPacketBase* packet) {
serializeCharacter(buffer, static_cast<CharacterPacket*>(packet)); serializeCharacter(buffer, static_cast<CharacterPacket*>(packet));
} }
if (BOUNDS(packet->type, SerialPacketType::FORMAT_MONSTER, SerialPacketType::FORMAT_END_MONSTER)) { if (BOUNDS(packet->type, SerialPacketType::FORMAT_CREATURE, SerialPacketType::FORMAT_END_CREATURE)) {
serializeMonster(buffer, static_cast<MonsterPacket*>(packet)); serializeCreature(buffer, static_cast<CreaturePacket*>(packet));
} }
if (BOUNDS(packet->type, SerialPacketType::FORMAT_TEXT, SerialPacketType::FORMAT_END_TEXT)) { if (BOUNDS(packet->type, SerialPacketType::FORMAT_TEXT, SerialPacketType::FORMAT_END_TEXT)) {
@@ -95,8 +95,8 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) {
deserializeCharacter(buffer, static_cast<CharacterPacket*>(packet)); deserializeCharacter(buffer, static_cast<CharacterPacket*>(packet));
} }
if (BOUNDS(type, SerialPacketType::FORMAT_MONSTER, SerialPacketType::FORMAT_END_MONSTER)) { if (BOUNDS(type, SerialPacketType::FORMAT_CREATURE, SerialPacketType::FORMAT_END_CREATURE)) {
deserializeMonster(buffer, static_cast<MonsterPacket*>(packet)); deserializeCreature(buffer, static_cast<CreaturePacket*>(packet));
} }
if (BOUNDS(type, SerialPacketType::FORMAT_TEXT, SerialPacketType::FORMAT_END_TEXT)) { if (BOUNDS(type, SerialPacketType::FORMAT_TEXT, SerialPacketType::FORMAT_END_TEXT)) {