common builds cleanly
This commit is contained in:
@@ -0,0 +1,76 @@
|
|||||||
|
/* Copyright: (c) Kayne Ruse 2013-2015
|
||||||
|
*
|
||||||
|
* This software is provided 'as-is', without any express or implied
|
||||||
|
* warranty. In no event will the authors be held liable for any damages
|
||||||
|
* arising from the use of this software.
|
||||||
|
*
|
||||||
|
* Permission is granted to anyone to use this software for any purpose,
|
||||||
|
* including commercial applications, and to alter it and redistribute it
|
||||||
|
* freely, subject to the following restrictions:
|
||||||
|
*
|
||||||
|
* 1. The origin of this software must not be misrepresented; you must not
|
||||||
|
* claim that you wrote the original software. If you use this software
|
||||||
|
* in a product, an acknowledgment in the product documentation would be
|
||||||
|
* appreciated but is not required.
|
||||||
|
*
|
||||||
|
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
* misrepresented as being the original software.
|
||||||
|
*
|
||||||
|
* 3. This notice may not be removed or altered from any source
|
||||||
|
* distribution.
|
||||||
|
*/
|
||||||
|
#include "monster_packet.hpp"
|
||||||
|
|
||||||
|
#include "serial_utility.hpp"
|
||||||
|
|
||||||
|
void serializeMonster(void* buffer, MonsterPacket* packet) {
|
||||||
|
serialCopy(&buffer, &packet->type, sizeof(SerialPacketType));
|
||||||
|
|
||||||
|
//identify the monster
|
||||||
|
serialCopy(&buffer, &packet->monsterIndex, sizeof(int));
|
||||||
|
serialCopy(&buffer, packet->handle, PACKET_STRING_SIZE);
|
||||||
|
serialCopy(&buffer, packet->avatar, PACKET_STRING_SIZE);
|
||||||
|
|
||||||
|
//bounds
|
||||||
|
serialCopy(&buffer, &packet->bounds.x, sizeof(int));
|
||||||
|
serialCopy(&buffer, &packet->bounds.y, sizeof(int));
|
||||||
|
serialCopy(&buffer, &packet->bounds.w, sizeof(int));
|
||||||
|
serialCopy(&buffer, &packet->bounds.h, sizeof(int));
|
||||||
|
|
||||||
|
|
||||||
|
//location
|
||||||
|
serialCopy(&buffer, &packet->roomIndex, sizeof(int));
|
||||||
|
serialCopy(&buffer, &packet->origin.x, sizeof(double));
|
||||||
|
serialCopy(&buffer, &packet->origin.y, sizeof(double));
|
||||||
|
serialCopy(&buffer, &packet->motion.x, sizeof(double));
|
||||||
|
serialCopy(&buffer, &packet->motion.y, sizeof(double));
|
||||||
|
|
||||||
|
//attack data
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void deserializeMonster(void* buffer, MonsterPacket* packet) {
|
||||||
|
deserialCopy(&buffer, &packet->type, sizeof(SerialPacketType));
|
||||||
|
|
||||||
|
//identify the monster
|
||||||
|
deserialCopy(&buffer, &packet->monsterIndex, sizeof(int));
|
||||||
|
deserialCopy(&buffer, packet->handle, PACKET_STRING_SIZE);
|
||||||
|
deserialCopy(&buffer, packet->avatar, PACKET_STRING_SIZE);
|
||||||
|
|
||||||
|
//bounds
|
||||||
|
deserialCopy(&buffer, &packet->bounds.x, sizeof(int));
|
||||||
|
deserialCopy(&buffer, &packet->bounds.y, sizeof(int));
|
||||||
|
deserialCopy(&buffer, &packet->bounds.w, sizeof(int));
|
||||||
|
deserialCopy(&buffer, &packet->bounds.h, sizeof(int));
|
||||||
|
|
||||||
|
|
||||||
|
//location
|
||||||
|
deserialCopy(&buffer, &packet->roomIndex, sizeof(int));
|
||||||
|
deserialCopy(&buffer, &packet->origin.x, sizeof(double));
|
||||||
|
deserialCopy(&buffer, &packet->origin.y, sizeof(double));
|
||||||
|
deserialCopy(&buffer, &packet->motion.x, sizeof(double));
|
||||||
|
deserialCopy(&buffer, &packet->motion.y, sizeof(double));
|
||||||
|
|
||||||
|
//attack data
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
/* Copyright: (c) Kayne Ruse 2013-2015
|
||||||
|
*
|
||||||
|
* This software is provided 'as-is', without any express or implied
|
||||||
|
* warranty. In no event will the authors be held liable for any damages
|
||||||
|
* arising from the use of this software.
|
||||||
|
*
|
||||||
|
* Permission is granted to anyone to use this software for any purpose,
|
||||||
|
* including commercial applications, and to alter it and redistribute it
|
||||||
|
* freely, subject to the following restrictions:
|
||||||
|
*
|
||||||
|
* 1. The origin of this software must not be misrepresented; you must not
|
||||||
|
* claim that you wrote the original software. If you use this software
|
||||||
|
* in a product, an acknowledgment in the product documentation would be
|
||||||
|
* appreciated but is not required.
|
||||||
|
*
|
||||||
|
* 2. Altered source versions must be plainly marked as such, and must not be
|
||||||
|
* misrepresented as being the original software.
|
||||||
|
*
|
||||||
|
* 3. This notice may not be removed or altered from any source
|
||||||
|
* distribution.
|
||||||
|
*/
|
||||||
|
#ifndef MONSTERPACKET_HPP_
|
||||||
|
#define MONSTERPACKET_HPP_
|
||||||
|
|
||||||
|
#include "serial_packet_base.hpp"
|
||||||
|
|
||||||
|
#include "bounding_box.hpp"
|
||||||
|
#include "vector2.hpp"
|
||||||
|
|
||||||
|
struct MonsterPacket : SerialPacketBase {
|
||||||
|
//identify the monster
|
||||||
|
int monsterIndex;
|
||||||
|
char handle[PACKET_STRING_SIZE];
|
||||||
|
char avatar[PACKET_STRING_SIZE];
|
||||||
|
BoundingBox bounds;
|
||||||
|
|
||||||
|
//location
|
||||||
|
int roomIndex;
|
||||||
|
Vector2 origin;
|
||||||
|
Vector2 motion;
|
||||||
|
|
||||||
|
//TODO: attack data
|
||||||
|
};
|
||||||
|
|
||||||
|
void serializeMonster(void* buffer, MonsterPacket* packet);
|
||||||
|
void deserializeMonster(void* buffer, MonsterPacket* packet);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -25,6 +25,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 "region_packet.hpp"
|
#include "region_packet.hpp"
|
||||||
#include "server_packet.hpp"
|
#include "server_packet.hpp"
|
||||||
#include "text_packet.hpp"
|
#include "text_packet.hpp"
|
||||||
@@ -38,9 +39,10 @@ constexpr int NETWORK_VERSION = -1;
|
|||||||
union MaxPacket {
|
union MaxPacket {
|
||||||
CharacterPacket a;
|
CharacterPacket a;
|
||||||
ClientPacket b;
|
ClientPacket b;
|
||||||
RegionPacket c;
|
MonsterPacket c;
|
||||||
ServerPacket d;
|
RegionPacket d;
|
||||||
TextPacket e;
|
ServerPacket e;
|
||||||
|
TextPacket f;
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr int MAX_PACKET_SIZE = sizeof(MaxPacket);
|
constexpr int MAX_PACKET_SIZE = sizeof(MaxPacket);
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ enum class SerialPacketType {
|
|||||||
//-------------------------
|
//-------------------------
|
||||||
//MonsterPacket
|
//MonsterPacket
|
||||||
// monster index,
|
// monster index,
|
||||||
// handle, avatar, hitbox?
|
// handle, avatar, hitbox
|
||||||
// room index, origin, motion
|
// room index, origin, motion
|
||||||
// TODO: attack data
|
// TODO: attack data
|
||||||
//-------------------------
|
//-------------------------
|
||||||
|
|||||||
@@ -24,6 +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 "region_packet.hpp"
|
#include "region_packet.hpp"
|
||||||
#include "server_packet.hpp"
|
#include "server_packet.hpp"
|
||||||
#include "text_packet.hpp"
|
#include "text_packet.hpp"
|
||||||
@@ -75,16 +76,25 @@ void serializePacket(void* buffer, SerialPacketBase* packet) {
|
|||||||
case SerialPacketType::QUERY_CHARACTER_EXISTS:
|
case SerialPacketType::QUERY_CHARACTER_EXISTS:
|
||||||
case SerialPacketType::QUERY_CHARACTER_STATS:
|
case SerialPacketType::QUERY_CHARACTER_STATS:
|
||||||
case SerialPacketType::QUERY_CHARACTER_LOCATION:
|
case SerialPacketType::QUERY_CHARACTER_LOCATION:
|
||||||
case SerialPacketType::CHARACTER_SET_ROOM:
|
case SerialPacketType::CHARACTER_MOVEMENT:
|
||||||
case SerialPacketType::CHARACTER_SET_ORIGIN:
|
case SerialPacketType::CHARACTER_ATTACK:
|
||||||
case SerialPacketType::CHARACTER_SET_MOTION:
|
|
||||||
serializeCharacter(buffer, static_cast<CharacterPacket*>(packet));
|
serializeCharacter(buffer, static_cast<CharacterPacket*>(packet));
|
||||||
break;
|
break;
|
||||||
|
case SerialPacketType::MONSTER_CREATE:
|
||||||
|
case SerialPacketType::MONSTER_DELETE:
|
||||||
|
case SerialPacketType::QUERY_MONSTER_EXISTS:
|
||||||
|
case SerialPacketType::QUERY_MONSTER_STATS:
|
||||||
|
case SerialPacketType::QUERY_MONSTER_LOCATION:
|
||||||
|
case SerialPacketType::MONSTER_MOVEMENT:
|
||||||
|
case SerialPacketType::MONSTER_ATTACK:
|
||||||
|
serializeMonster(buffer, static_cast<MonsterPacket*>(packet));
|
||||||
|
break;
|
||||||
case SerialPacketType::TEXT_BROADCAST:
|
case SerialPacketType::TEXT_BROADCAST:
|
||||||
case SerialPacketType::JOIN_REJECTION:
|
case SerialPacketType::JOIN_REJECTION:
|
||||||
case SerialPacketType::LOGIN_REJECTION:
|
case SerialPacketType::LOGIN_REJECTION:
|
||||||
case SerialPacketType::REGION_REJECTION:
|
case SerialPacketType::REGION_REJECTION:
|
||||||
case SerialPacketType::CHARACTER_REJECTION:
|
case SerialPacketType::CHARACTER_REJECTION:
|
||||||
|
case SerialPacketType::MONSTER_REJECTION:
|
||||||
case SerialPacketType::SHUTDOWN_REJECTION:
|
case SerialPacketType::SHUTDOWN_REJECTION:
|
||||||
serializeText(buffer, static_cast<TextPacket*>(packet));
|
serializeText(buffer, static_cast<TextPacket*>(packet));
|
||||||
break;
|
break;
|
||||||
@@ -126,16 +136,25 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) {
|
|||||||
case SerialPacketType::QUERY_CHARACTER_EXISTS:
|
case SerialPacketType::QUERY_CHARACTER_EXISTS:
|
||||||
case SerialPacketType::QUERY_CHARACTER_STATS:
|
case SerialPacketType::QUERY_CHARACTER_STATS:
|
||||||
case SerialPacketType::QUERY_CHARACTER_LOCATION:
|
case SerialPacketType::QUERY_CHARACTER_LOCATION:
|
||||||
case SerialPacketType::CHARACTER_SET_ROOM:
|
case SerialPacketType::CHARACTER_MOVEMENT:
|
||||||
case SerialPacketType::CHARACTER_SET_ORIGIN:
|
case SerialPacketType::CHARACTER_ATTACK:
|
||||||
case SerialPacketType::CHARACTER_SET_MOTION:
|
|
||||||
deserializeCharacter(buffer, static_cast<CharacterPacket*>(packet));
|
deserializeCharacter(buffer, static_cast<CharacterPacket*>(packet));
|
||||||
break;
|
break;
|
||||||
|
case SerialPacketType::MONSTER_CREATE:
|
||||||
|
case SerialPacketType::MONSTER_DELETE:
|
||||||
|
case SerialPacketType::QUERY_MONSTER_EXISTS:
|
||||||
|
case SerialPacketType::QUERY_MONSTER_STATS:
|
||||||
|
case SerialPacketType::QUERY_MONSTER_LOCATION:
|
||||||
|
case SerialPacketType::MONSTER_MOVEMENT:
|
||||||
|
case SerialPacketType::MONSTER_ATTACK:
|
||||||
|
deserializeMonster(buffer, static_cast<MonsterPacket*>(packet));
|
||||||
|
break;
|
||||||
case SerialPacketType::TEXT_BROADCAST:
|
case SerialPacketType::TEXT_BROADCAST:
|
||||||
case SerialPacketType::JOIN_REJECTION:
|
case SerialPacketType::JOIN_REJECTION:
|
||||||
case SerialPacketType::LOGIN_REJECTION:
|
case SerialPacketType::LOGIN_REJECTION:
|
||||||
case SerialPacketType::REGION_REJECTION:
|
case SerialPacketType::REGION_REJECTION:
|
||||||
case SerialPacketType::CHARACTER_REJECTION:
|
case SerialPacketType::CHARACTER_REJECTION:
|
||||||
|
case SerialPacketType::MONSTER_REJECTION:
|
||||||
case SerialPacketType::SHUTDOWN_REJECTION:
|
case SerialPacketType::SHUTDOWN_REJECTION:
|
||||||
deserializeText(buffer, static_cast<TextPacket*>(packet));
|
deserializeText(buffer, static_cast<TextPacket*>(packet));
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user