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