Added the rest of the combat info to the network code
This commit is contained in:
@@ -40,7 +40,16 @@
|
|||||||
#include <list>
|
#include <list>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#define COMBAT_MAX_CHARACTER_COUNT 12
|
||||||
|
#define COMBAT_MAX_ENEMY_COUNT 12
|
||||||
|
|
||||||
struct CombatData {
|
struct CombatData {
|
||||||
|
enum class Terrain {
|
||||||
|
//TODO: types of terrains
|
||||||
|
NONE = 0,
|
||||||
|
GRASSLANDS,
|
||||||
|
};
|
||||||
|
|
||||||
typedef std::chrono::steady_clock Clock;
|
typedef std::chrono::steady_clock Clock;
|
||||||
|
|
||||||
//combatants, point to the std::map's internal pairs
|
//combatants, point to the std::map's internal pairs
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/* Copyright: (c) Kayne Ruse 2014
|
||||||
|
*
|
||||||
|
* 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 ROOMDATA_HPP_
|
||||||
|
#define ROOMDATA_HPP_
|
||||||
|
|
||||||
|
struct RoomData {
|
||||||
|
enum class RoomType {
|
||||||
|
OVERWORLD,
|
||||||
|
RUINS,
|
||||||
|
TOWERS,
|
||||||
|
FORESTS,
|
||||||
|
CAVES,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -24,6 +24,7 @@
|
|||||||
#include "client_data.hpp"
|
#include "client_data.hpp"
|
||||||
#include "combat_data.hpp"
|
#include "combat_data.hpp"
|
||||||
#include "enemy_data.hpp"
|
#include "enemy_data.hpp"
|
||||||
|
#include "room_data.hpp"
|
||||||
#include "statistics.hpp"
|
#include "statistics.hpp"
|
||||||
|
|
||||||
/* DOCS: Sanity check, read more
|
/* DOCS: Sanity check, read more
|
||||||
|
|||||||
@@ -99,7 +99,19 @@ void serializeCombat(SerialPacket* packet, char* buffer) {
|
|||||||
//integers
|
//integers
|
||||||
SERIALIZE(buffer, &packet->combatInfo.combatIndex, sizeof(int));
|
SERIALIZE(buffer, &packet->combatInfo.combatIndex, sizeof(int));
|
||||||
SERIALIZE(buffer, &packet->combatInfo.difficulty, sizeof(int));
|
SERIALIZE(buffer, &packet->combatInfo.difficulty, sizeof(int));
|
||||||
//TODO: more comabat info
|
|
||||||
|
SERIALIZE(buffer, &packet->combatInfo.terrainType, sizeof(CombatData::Terrain));
|
||||||
|
|
||||||
|
//arrays
|
||||||
|
SERIALIZE(buffer, &packet->combatInfo.characterArray, COMBAT_MAX_CHARACTER_COUNT);
|
||||||
|
SERIALIZE(buffer, &packet->combatInfo.enemyArray, COMBAT_MAX_ENEMY_COUNT);
|
||||||
|
|
||||||
|
//position
|
||||||
|
SERIALIZE(buffer, &packet->combatInfo.mapIndex, sizeof(int));
|
||||||
|
SERIALIZE(buffer, &packet->combatInfo.position.x, sizeof(double));
|
||||||
|
SERIALIZE(buffer, &packet->combatInfo.position.y, sizeof(double));
|
||||||
|
|
||||||
|
//TODO: rewards
|
||||||
}
|
}
|
||||||
|
|
||||||
void serializeStatistics(Statistics* stats, char* buffer) {
|
void serializeStatistics(Statistics* stats, char* buffer) {
|
||||||
@@ -231,7 +243,19 @@ void deserializeCombat(SerialPacket* packet, char* buffer) {
|
|||||||
//integers
|
//integers
|
||||||
DESERIALIZE(buffer, &packet->combatInfo.combatIndex, sizeof(int));
|
DESERIALIZE(buffer, &packet->combatInfo.combatIndex, sizeof(int));
|
||||||
DESERIALIZE(buffer, &packet->combatInfo.difficulty, sizeof(int));
|
DESERIALIZE(buffer, &packet->combatInfo.difficulty, sizeof(int));
|
||||||
//TODO: more comabat info
|
|
||||||
|
DESERIALIZE(buffer, &packet->combatInfo.terrainType, sizeof(CombatData::Terrain));
|
||||||
|
|
||||||
|
//arrays
|
||||||
|
DESERIALIZE(buffer, &packet->combatInfo.characterArray, COMBAT_MAX_CHARACTER_COUNT);
|
||||||
|
DESERIALIZE(buffer, &packet->combatInfo.enemyArray, COMBAT_MAX_ENEMY_COUNT);
|
||||||
|
|
||||||
|
//position
|
||||||
|
DESERIALIZE(buffer, &packet->combatInfo.mapIndex, sizeof(int));
|
||||||
|
DESERIALIZE(buffer, &packet->combatInfo.position.x, sizeof(double));
|
||||||
|
DESERIALIZE(buffer, &packet->combatInfo.position.y, sizeof(double));
|
||||||
|
|
||||||
|
//TODO: rewards
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -337,8 +361,16 @@ void serialize(SerialPacket* packet, void* buffer) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
//combat info
|
//combat info
|
||||||
case SerialPacket::Type::COMBAT_ENTER:
|
case SerialPacket::Type::COMBAT_NEW:
|
||||||
case SerialPacket::Type::COMBAT_EXIT:
|
case SerialPacket::Type::COMBAT_DELETE:
|
||||||
|
case SerialPacket::Type::COMBAT_UPDATE:
|
||||||
|
|
||||||
|
//TODO: is this the best fit?
|
||||||
|
case SerialPacket::Type::COMBAT_ENTER_REQUEST:
|
||||||
|
case SerialPacket::Type::COMBAT_ENTER_RESPONSE:
|
||||||
|
case SerialPacket::Type::COMBAT_EXIT_REQUEST:
|
||||||
|
case SerialPacket::Type::COMBAT_EXIT_RESPONSE:
|
||||||
|
|
||||||
serializeCombat(packet, reinterpret_cast<char*>(buffer));
|
serializeCombat(packet, reinterpret_cast<char*>(buffer));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -407,8 +439,16 @@ void deserialize(SerialPacket* packet, void* buffer) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
//combat info
|
//combat info
|
||||||
case SerialPacket::Type::COMBAT_ENTER:
|
case SerialPacket::Type::COMBAT_NEW:
|
||||||
case SerialPacket::Type::COMBAT_EXIT:
|
case SerialPacket::Type::COMBAT_DELETE:
|
||||||
|
case SerialPacket::Type::COMBAT_UPDATE:
|
||||||
|
|
||||||
|
//TODO: is this the best fit?
|
||||||
|
case SerialPacket::Type::COMBAT_ENTER_REQUEST:
|
||||||
|
case SerialPacket::Type::COMBAT_ENTER_RESPONSE:
|
||||||
|
case SerialPacket::Type::COMBAT_EXIT_REQUEST:
|
||||||
|
case SerialPacket::Type::COMBAT_EXIT_RESPONSE:
|
||||||
|
|
||||||
serializeCombat(packet, reinterpret_cast<char*>(buffer));
|
serializeCombat(packet, reinterpret_cast<char*>(buffer));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -25,10 +25,11 @@
|
|||||||
#include "vector2.hpp"
|
#include "vector2.hpp"
|
||||||
#include "region.hpp"
|
#include "region.hpp"
|
||||||
#include "statistics.hpp"
|
#include "statistics.hpp"
|
||||||
|
#include "combat_data.hpp"
|
||||||
|
|
||||||
#include "SDL/SDL_net.h"
|
#include "SDL/SDL_net.h"
|
||||||
|
|
||||||
#define NETWORK_VERSION 20140528
|
#define NETWORK_VERSION 20140601
|
||||||
#define PACKET_STRING_SIZE 100
|
#define PACKET_STRING_SIZE 100
|
||||||
|
|
||||||
union SerialPacket {
|
union SerialPacket {
|
||||||
@@ -38,60 +39,67 @@ union SerialPacket {
|
|||||||
NONE = 0,
|
NONE = 0,
|
||||||
|
|
||||||
//keep alive
|
//keep alive
|
||||||
PING = 1,
|
PING,
|
||||||
PONG = 2,
|
PONG,
|
||||||
|
|
||||||
//searching for a server to join
|
//searching for a server to join
|
||||||
BROADCAST_REQUEST = 3,
|
BROADCAST_REQUEST,
|
||||||
BROADCAST_RESPONSE = 4,
|
BROADCAST_RESPONSE,
|
||||||
BROADCAST_REJECTION = 5,
|
BROADCAST_REJECTION,
|
||||||
|
|
||||||
//try to join the server
|
//try to join the server
|
||||||
JOIN_REQUEST = 6,
|
JOIN_REQUEST,
|
||||||
JOIN_RESPONSE = 7,
|
JOIN_RESPONSE,
|
||||||
JOIN_REJECTION = 8,
|
JOIN_REJECTION,
|
||||||
|
|
||||||
//mass update
|
//mass update
|
||||||
SYNCHRONIZE = 9,
|
SYNCHRONIZE,
|
||||||
|
|
||||||
//disconnect from the server
|
//disconnect from the server
|
||||||
DISCONNECT = 10,
|
DISCONNECT,
|
||||||
|
|
||||||
//shut down the server
|
//shut down the server
|
||||||
SHUTDOWN = 11,
|
SHUTDOWN,
|
||||||
|
|
||||||
//map data
|
//map data
|
||||||
REGION_REQUEST = 12,
|
REGION_REQUEST,
|
||||||
REGION_CONTENT = 13,
|
REGION_CONTENT,
|
||||||
REGION_REJECTION = 14,
|
REGION_REJECTION,
|
||||||
|
|
||||||
//combat data
|
//combat data
|
||||||
COMBAT_ENTER = 15,
|
COMBAT_NEW,
|
||||||
COMBAT_EXIT = 16,
|
COMBAT_DELETE,
|
||||||
|
COMBAT_UPDATE,
|
||||||
|
|
||||||
COMBAT_UPDATE = 17,
|
COMBAT_ENTER_REQUEST,
|
||||||
|
COMBAT_ENTER_RESPONSE,
|
||||||
|
|
||||||
COMBAT_REJECTION = 18,
|
COMBAT_EXIT_REQUEST,
|
||||||
|
COMBAT_EXIT_RESPONSE,
|
||||||
|
|
||||||
|
//TODO: COMBAT info
|
||||||
|
|
||||||
|
COMBAT_REJECTION,
|
||||||
|
|
||||||
//character data
|
//character data
|
||||||
CHARACTER_NEW = 19,
|
CHARACTER_NEW,
|
||||||
CHARACTER_DELETE = 20,
|
CHARACTER_DELETE,
|
||||||
CHARACTER_UPDATE = 21,
|
CHARACTER_UPDATE,
|
||||||
|
|
||||||
CHARACTER_STATS_REQUEST = 22,
|
CHARACTER_STATS_REQUEST,
|
||||||
CHARACTER_STATS_RESPONSE = 23,
|
CHARACTER_STATS_RESPONSE,
|
||||||
|
|
||||||
CHARACTER_REJECTION = 24,
|
CHARACTER_REJECTION,
|
||||||
|
|
||||||
//enemy data
|
//enemy data
|
||||||
ENEMY_NEW = 25,
|
ENEMY_NEW,
|
||||||
ENEMY_DELETE = 26,
|
ENEMY_DELETE,
|
||||||
ENEMY_UPDATE = 27,
|
ENEMY_UPDATE,
|
||||||
|
|
||||||
ENEMY_STATS_REQUEST = 28,
|
ENEMY_STATS_REQUEST,
|
||||||
ENEMY_STATS_RESPONSE = 29,
|
ENEMY_STATS_RESPONSE,
|
||||||
|
|
||||||
ENEMY_REJECTION = 30,
|
ENEMY_REJECTION,
|
||||||
|
|
||||||
//more packet types go here
|
//more packet types go here
|
||||||
|
|
||||||
@@ -138,8 +146,11 @@ union SerialPacket {
|
|||||||
Metadata meta;
|
Metadata meta;
|
||||||
int combatIndex;
|
int combatIndex;
|
||||||
int difficulty;
|
int difficulty;
|
||||||
//TODO: background image, based on terrain type
|
CombatData::Terrain terrainType;
|
||||||
//TODO: array of combatants
|
int characterArray[COMBAT_MAX_CHARACTER_COUNT];
|
||||||
|
int enemyArray[COMBAT_MAX_ENEMY_COUNT];
|
||||||
|
int mapIndex;
|
||||||
|
Vector2 position;
|
||||||
//TODO: rewards
|
//TODO: rewards
|
||||||
}combatInfo;
|
}combatInfo;
|
||||||
|
|
||||||
@@ -163,6 +174,7 @@ union SerialPacket {
|
|||||||
char handle[PACKET_STRING_SIZE];
|
char handle[PACKET_STRING_SIZE];
|
||||||
char avatar[PACKET_STRING_SIZE];
|
char avatar[PACKET_STRING_SIZE];
|
||||||
Statistics stats;
|
Statistics stats;
|
||||||
|
//TODO: rewards
|
||||||
}enemyInfo;
|
}enemyInfo;
|
||||||
|
|
||||||
//defaults
|
//defaults
|
||||||
|
|||||||
@@ -23,18 +23,10 @@
|
|||||||
#define ENEMYFACTORYINTERFACE_HPP_
|
#define ENEMYFACTORYINTERFACE_HPP_
|
||||||
|
|
||||||
#include "enemy_data.hpp"
|
#include "enemy_data.hpp"
|
||||||
|
#include "room_data.hpp"
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
//TODO: move this elsewhere
|
|
||||||
enum RoomType {
|
|
||||||
OVERWORLD,
|
|
||||||
RUINS,
|
|
||||||
TOWERS,
|
|
||||||
FORESTS,
|
|
||||||
CAVES,
|
|
||||||
};
|
|
||||||
|
|
||||||
//NOTE: Based on biome, world difficulty, etc.
|
//NOTE: Based on biome, world difficulty, etc.
|
||||||
class EnemyFactoryInterface {
|
class EnemyFactoryInterface {
|
||||||
public:
|
public:
|
||||||
@@ -44,12 +36,12 @@ public:
|
|||||||
virtual void Generate(std::list<EnemyData>* container) = 0;
|
virtual void Generate(std::list<EnemyData>* container) = 0;
|
||||||
|
|
||||||
//control the difficulty of the room
|
//control the difficulty of the room
|
||||||
RoomType SetType(RoomType t) { return type = t; }
|
RoomData::RoomType SetType(RoomData::RoomType t) { return type = t; }
|
||||||
int SetDifficulty(int d) { return difficulty = d; }
|
int SetDifficulty(int d) { return difficulty = d; }
|
||||||
RoomType GetType() { return type; }
|
RoomData::RoomType GetType() { return type; }
|
||||||
int GetDifficulty() { return difficulty; }
|
int GetDifficulty() { return difficulty; }
|
||||||
protected:
|
protected:
|
||||||
RoomType type;
|
RoomData::RoomType type;
|
||||||
int difficulty;
|
int difficulty;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user