Updated networking
This commit is contained in:
+7
-7
@@ -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);
|
||||||
|
|
||||||
+5
-5
@@ -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);
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user