Expanded network protocol, read more
Not really doing much, just busywork with the server's handlers. I've tweaked the TODO tags as well.
This commit is contained in:
@@ -34,14 +34,11 @@ struct CharacterPacket : SerialPacketBase {
|
||||
|
||||
//the owner
|
||||
int accountIndex;
|
||||
//TODO: Authentication token?
|
||||
|
||||
//location
|
||||
int roomIndex;
|
||||
Vector2 origin;
|
||||
Vector2 motion;
|
||||
|
||||
//TODO: gameplay components: equipment, items, buffs, debuffs...
|
||||
};
|
||||
|
||||
void serializeCharacter(void* buffer, CharacterPacket* packet);
|
||||
|
||||
@@ -28,6 +28,7 @@ struct ClientPacket : SerialPacketBase {
|
||||
int clientIndex;
|
||||
int accountIndex;
|
||||
char username[PACKET_STRING_SIZE];
|
||||
//TODO: (9) password, auth token
|
||||
};
|
||||
|
||||
void serializeClient(void* buffer, ClientPacket* packet);
|
||||
|
||||
@@ -44,8 +44,6 @@ void serializeMonster(void* buffer, MonsterPacket* packet) {
|
||||
serialCopy(&buffer, &packet->origin.y, sizeof(double));
|
||||
serialCopy(&buffer, &packet->motion.x, sizeof(double));
|
||||
serialCopy(&buffer, &packet->motion.y, sizeof(double));
|
||||
|
||||
//TODO: attack data
|
||||
}
|
||||
|
||||
void deserializeMonster(void* buffer, MonsterPacket* packet) {
|
||||
@@ -69,6 +67,4 @@ void deserializeMonster(void* buffer, MonsterPacket* packet) {
|
||||
deserialCopy(&buffer, &packet->origin.y, sizeof(double));
|
||||
deserialCopy(&buffer, &packet->motion.x, sizeof(double));
|
||||
deserialCopy(&buffer, &packet->motion.y, sizeof(double));
|
||||
|
||||
//TODO: attack data
|
||||
}
|
||||
|
||||
@@ -38,8 +38,6 @@ struct MonsterPacket : SerialPacketBase {
|
||||
int roomIndex;
|
||||
Vector2 origin;
|
||||
Vector2 motion;
|
||||
|
||||
//TODO: attack data
|
||||
};
|
||||
|
||||
void serializeMonster(void* buffer, MonsterPacket* packet);
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
typedef SerialPacketBase SerialPacket;
|
||||
|
||||
//DOCS: NETWORK_VERSION is used to discern compatible servers and clients
|
||||
constexpr int NETWORK_VERSION = 20150205;
|
||||
constexpr int NETWORK_VERSION = 20150213;
|
||||
|
||||
union MaxPacket {
|
||||
CharacterPacket a;
|
||||
|
||||
@@ -27,10 +27,9 @@
|
||||
* valid data, but it will still be carried in that packet's format.
|
||||
*/
|
||||
|
||||
//TODO: This needs to be smoothed out
|
||||
enum class SerialPacketType {
|
||||
//default: there is something wrong
|
||||
NONE = 0,
|
||||
NONE,
|
||||
|
||||
//-------------------------
|
||||
//ServerPacket
|
||||
@@ -38,12 +37,12 @@ enum class SerialPacketType {
|
||||
//-------------------------
|
||||
|
||||
//heartbeat
|
||||
PING = 1,
|
||||
PONG = 2,
|
||||
PING,
|
||||
PONG,
|
||||
|
||||
//Used for finding available servers
|
||||
BROADCAST_REQUEST = 3,
|
||||
BROADCAST_RESPONSE = 4,
|
||||
BROADCAST_REQUEST,
|
||||
BROADCAST_RESPONSE,
|
||||
|
||||
//-------------------------
|
||||
//ClientPacket
|
||||
@@ -51,24 +50,24 @@ enum class SerialPacketType {
|
||||
//-------------------------
|
||||
|
||||
//Connecting to a server as a client
|
||||
JOIN_REQUEST = 5,
|
||||
JOIN_RESPONSE = 6,
|
||||
JOIN_REQUEST,
|
||||
JOIN_RESPONSE,
|
||||
|
||||
//disconnect from the server
|
||||
DISCONNECT_REQUEST = 7,
|
||||
DISCONNECT_RESPONSE = 8,
|
||||
DISCONNECT_FORCED = 9,
|
||||
DISCONNECT_REQUEST,
|
||||
DISCONNECT_RESPONSE,
|
||||
ADMIN_DISCONNECT_FORCED,
|
||||
|
||||
//load the account
|
||||
LOGIN_REQUEST = 10,
|
||||
LOGIN_RESPONSE = 11,
|
||||
LOGIN_REQUEST,
|
||||
LOGIN_RESPONSE,
|
||||
|
||||
//unload the account
|
||||
LOGOUT_REQUEST = 12,
|
||||
LOGOUT_RESPONSE = 13,
|
||||
LOGOUT_REQUEST,
|
||||
LOGOUT_RESPONSE,
|
||||
|
||||
//shut down the server
|
||||
SHUTDOWN_REQUEST = 14,
|
||||
ADMIN_SHUTDOWN_REQUEST,
|
||||
|
||||
//-------------------------
|
||||
//RegionPacket
|
||||
@@ -76,32 +75,32 @@ enum class SerialPacketType {
|
||||
//-------------------------
|
||||
|
||||
//map data
|
||||
REGION_REQUEST = 15, //NOTE: technically a query
|
||||
REGION_CONTENT = 16,
|
||||
REGION_REQUEST,
|
||||
REGION_CONTENT,
|
||||
|
||||
//-------------------------
|
||||
//CharacterPacket
|
||||
// character index,
|
||||
// handle, avatar,
|
||||
// account index (owner),
|
||||
// room index, origin, motion,
|
||||
// statistics
|
||||
// room index, origin, motion
|
||||
//-------------------------
|
||||
|
||||
//character management
|
||||
CHARACTER_CREATE = 17,
|
||||
CHARACTER_DELETE = 18,
|
||||
CHARACTER_LOAD = 19,
|
||||
CHARACTER_UNLOAD = 20,
|
||||
CHARACTER_CREATE,
|
||||
CHARACTER_DELETE,
|
||||
CHARACTER_LOAD,
|
||||
CHARACTER_UNLOAD,
|
||||
|
||||
//find out info from the server
|
||||
QUERY_CHARACTER_EXISTS = 21,
|
||||
QUERY_CHARACTER_STATS = 22,
|
||||
QUERY_CHARACTER_LOCATION = 23,
|
||||
QUERY_CHARACTER_EXISTS,
|
||||
QUERY_CHARACTER_STATS,
|
||||
QUERY_CHARACTER_LOCATION,
|
||||
|
||||
//set the info in the server
|
||||
CHARACTER_MOVEMENT = 24,
|
||||
CHARACTER_ATTACK = 25,
|
||||
CHARACTER_MOVEMENT,
|
||||
CHARACTER_ATTACK,
|
||||
CHARACTER_DAMAGE,
|
||||
|
||||
//admin control
|
||||
// ADMIN_SET_CHARACTER_ORIGIN,
|
||||
@@ -109,20 +108,21 @@ enum class SerialPacketType {
|
||||
//-------------------------
|
||||
//MonsterPacket
|
||||
// monster index,
|
||||
// handle, avatar, hitbox
|
||||
// handle, avatar
|
||||
// bounds
|
||||
// room index, origin, motion
|
||||
// TODO: attack data
|
||||
//-------------------------
|
||||
|
||||
MONSTER_CREATE = 26,
|
||||
MONSTER_DELETE = 27,
|
||||
MONSTER_CREATE,
|
||||
MONSTER_DELETE,
|
||||
|
||||
QUERY_MONSTER_EXISTS = 28, //a list of monsters in a room
|
||||
QUERY_MONSTER_STATS = 29, //statistics of a specific monster type or instance
|
||||
QUERY_MONSTER_LOCATION = 30, //umm...
|
||||
QUERY_MONSTER_EXISTS,
|
||||
QUERY_MONSTER_STATS,
|
||||
QUERY_MONSTER_LOCATION,
|
||||
|
||||
MONSTER_MOVEMENT = 31, //monster movement
|
||||
MONSTER_ATTACK = 32,
|
||||
MONSTER_MOVEMENT,
|
||||
MONSTER_ATTACK,
|
||||
MONSTER_DAMAGE,
|
||||
|
||||
//-------------------------
|
||||
//TextPacket
|
||||
@@ -130,21 +130,21 @@ enum class SerialPacketType {
|
||||
//-------------------------
|
||||
|
||||
//general speech
|
||||
TEXT_BROADCAST = 33,
|
||||
TEXT_BROADCAST,
|
||||
|
||||
//rejection/error messages
|
||||
JOIN_REJECTION = 34,
|
||||
LOGIN_REJECTION = 35,
|
||||
REGION_REJECTION = 36,
|
||||
CHARACTER_REJECTION = 37,
|
||||
MONSTER_REJECTION = 38,
|
||||
SHUTDOWN_REJECTION = 39,
|
||||
JOIN_REJECTION,
|
||||
LOGIN_REJECTION,
|
||||
REGION_REJECTION,
|
||||
CHARACTER_REJECTION,
|
||||
MONSTER_REJECTION,
|
||||
SHUTDOWN_REJECTION,
|
||||
|
||||
//-------------------------
|
||||
//not used
|
||||
//-------------------------
|
||||
|
||||
LAST = 40
|
||||
LAST
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -57,12 +57,12 @@ void serializePacket(void* buffer, SerialPacketBase* packet) {
|
||||
case SerialPacketType::JOIN_RESPONSE:
|
||||
case SerialPacketType::DISCONNECT_REQUEST:
|
||||
case SerialPacketType::DISCONNECT_RESPONSE:
|
||||
case SerialPacketType::DISCONNECT_FORCED:
|
||||
case SerialPacketType::ADMIN_DISCONNECT_FORCED:
|
||||
case SerialPacketType::LOGIN_REQUEST:
|
||||
case SerialPacketType::LOGIN_RESPONSE:
|
||||
case SerialPacketType::LOGOUT_REQUEST:
|
||||
case SerialPacketType::LOGOUT_RESPONSE:
|
||||
case SerialPacketType::SHUTDOWN_REQUEST:
|
||||
case SerialPacketType::ADMIN_SHUTDOWN_REQUEST:
|
||||
serializeClient(buffer, static_cast<ClientPacket*>(packet));
|
||||
break;
|
||||
case SerialPacketType::REGION_REQUEST:
|
||||
@@ -78,6 +78,7 @@ void serializePacket(void* buffer, SerialPacketBase* packet) {
|
||||
case SerialPacketType::QUERY_CHARACTER_LOCATION:
|
||||
case SerialPacketType::CHARACTER_MOVEMENT:
|
||||
case SerialPacketType::CHARACTER_ATTACK:
|
||||
case SerialPacketType::CHARACTER_DAMAGE:
|
||||
serializeCharacter(buffer, static_cast<CharacterPacket*>(packet));
|
||||
break;
|
||||
case SerialPacketType::MONSTER_CREATE:
|
||||
@@ -87,6 +88,7 @@ void serializePacket(void* buffer, SerialPacketBase* packet) {
|
||||
case SerialPacketType::QUERY_MONSTER_LOCATION:
|
||||
case SerialPacketType::MONSTER_MOVEMENT:
|
||||
case SerialPacketType::MONSTER_ATTACK:
|
||||
case SerialPacketType::MONSTER_DAMAGE:
|
||||
serializeMonster(buffer, static_cast<MonsterPacket*>(packet));
|
||||
break;
|
||||
case SerialPacketType::TEXT_BROADCAST:
|
||||
@@ -117,12 +119,12 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) {
|
||||
case SerialPacketType::JOIN_RESPONSE:
|
||||
case SerialPacketType::DISCONNECT_REQUEST:
|
||||
case SerialPacketType::DISCONNECT_RESPONSE:
|
||||
case SerialPacketType::DISCONNECT_FORCED:
|
||||
case SerialPacketType::ADMIN_DISCONNECT_FORCED:
|
||||
case SerialPacketType::LOGIN_REQUEST:
|
||||
case SerialPacketType::LOGIN_RESPONSE:
|
||||
case SerialPacketType::LOGOUT_REQUEST:
|
||||
case SerialPacketType::LOGOUT_RESPONSE:
|
||||
case SerialPacketType::SHUTDOWN_REQUEST:
|
||||
case SerialPacketType::ADMIN_SHUTDOWN_REQUEST:
|
||||
deserializeClient(buffer, static_cast<ClientPacket*>(packet));
|
||||
break;
|
||||
case SerialPacketType::REGION_REQUEST:
|
||||
@@ -138,6 +140,7 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) {
|
||||
case SerialPacketType::QUERY_CHARACTER_LOCATION:
|
||||
case SerialPacketType::CHARACTER_MOVEMENT:
|
||||
case SerialPacketType::CHARACTER_ATTACK:
|
||||
case SerialPacketType::CHARACTER_DAMAGE:
|
||||
deserializeCharacter(buffer, static_cast<CharacterPacket*>(packet));
|
||||
break;
|
||||
case SerialPacketType::MONSTER_CREATE:
|
||||
@@ -147,6 +150,7 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) {
|
||||
case SerialPacketType::QUERY_MONSTER_LOCATION:
|
||||
case SerialPacketType::MONSTER_MOVEMENT:
|
||||
case SerialPacketType::MONSTER_ATTACK:
|
||||
case SerialPacketType::MONSTER_DAMAGE:
|
||||
deserializeMonster(buffer, static_cast<MonsterPacket*>(packet));
|
||||
break;
|
||||
case SerialPacketType::TEXT_BROADCAST:
|
||||
|
||||
@@ -140,7 +140,6 @@ int UDPNetworkUtility::SendToAllChannels(void* data, int len) {
|
||||
return sent;
|
||||
}
|
||||
|
||||
//TODO: put a void* and int* parameter list here
|
||||
int UDPNetworkUtility::Receive() {
|
||||
memset(packet->data, 0, packet->maxlen);
|
||||
int ret = SDLNet_UDP_Recv(socket, packet);
|
||||
|
||||
Reference in New Issue
Block a user