Moved serialization globals

This commit is contained in:
Kayne Ruse
2014-08-25 00:07:17 +10:00
parent 4ed512e0e2
commit 6f4334f84d
9 changed files with 25 additions and 25 deletions
+1 -1
View File
@@ -94,8 +94,8 @@ void ClientApplication::Init(int argc, char** argv) {
DEBUG_OUTPUT_VAR(REGION_WIDTH); DEBUG_OUTPUT_VAR(REGION_WIDTH);
DEBUG_OUTPUT_VAR(REGION_HEIGHT); DEBUG_OUTPUT_VAR(REGION_HEIGHT);
DEBUG_OUTPUT_VAR(REGION_DEPTH); DEBUG_OUTPUT_VAR(REGION_DEPTH);
DEBUG_OUTPUT_VAR(REGION_TILE_FOOTPRINT);
DEBUG_OUTPUT_VAR(REGION_SOLID_FOOTPRINT); DEBUG_OUTPUT_VAR(REGION_SOLID_FOOTPRINT);
DEBUG_OUTPUT_VAR(REGION_FOOTPRINT);
DEBUG_OUTPUT_VAR(PACKET_BUFFER_SIZE); DEBUG_OUTPUT_VAR(PACKET_BUFFER_SIZE);
DEBUG_OUTPUT_VAR(MAX_PACKET_SIZE); DEBUG_OUTPUT_VAR(MAX_PACKET_SIZE);
+1
View File
@@ -22,6 +22,7 @@
#include "region.hpp" #include "region.hpp"
#include <stdexcept> #include <stdexcept>
#include <cmath>
#include <cstring> #include <cstring>
int snapToBase(int base, int x) { int snapToBase(int base, int x) {
-7
View File
@@ -23,16 +23,12 @@
#define REGION_HPP_ #define REGION_HPP_
#include <bitset> #include <bitset>
#include <cmath>
//the region's storage format //the region's storage format
constexpr int REGION_WIDTH = 20; constexpr int REGION_WIDTH = 20;
constexpr int REGION_HEIGHT = 20; constexpr int REGION_HEIGHT = 20;
constexpr int REGION_DEPTH = 3; constexpr int REGION_DEPTH = 3;
//the size of the solid map
constexpr int REGION_SOLID_FOOTPRINT = ceil(REGION_WIDTH * REGION_HEIGHT / 8.0);
//utility function //utility function
int snapToBase(int base, int x); int snapToBase(int base, int x);
@@ -64,7 +60,4 @@ private:
std::bitset<REGION_WIDTH*REGION_HEIGHT> solid; std::bitset<REGION_WIDTH*REGION_HEIGHT> solid;
}; };
//the memory footprint of the tile and solid data; not including any metadata
constexpr int REGION_FOOTPRINT = REGION_WIDTH * REGION_HEIGHT * REGION_DEPTH * sizeof(Region::type_t) + REGION_SOLID_FOOTPRINT;
#endif #endif
+2 -2
View File
@@ -71,12 +71,12 @@ Region* RegionPagerBase::PushRegion(Region* const ptr) {
} }
Region* RegionPagerBase::LoadRegion(int x, int y) { Region* RegionPagerBase::LoadRegion(int x, int y) {
//TODO: load the region if possible //EMPTY, intended for override
return nullptr; return nullptr;
} }
Region* RegionPagerBase::SaveRegion(int x, int y) { Region* RegionPagerBase::SaveRegion(int x, int y) {
//TODO: find & save the region //EMPTY, intended for override
return nullptr; return nullptr;
} }
-2
View File
@@ -23,8 +23,6 @@
#include <stdexcept> #include <stdexcept>
//TODO: Could I push the pager to the API functions too?
Region* RegionPagerLua::LoadRegion(int x, int y) { Region* RegionPagerLua::LoadRegion(int x, int y) {
//get the pager's function from the registry //get the pager's function from the registry
lua_rawgeti(lua, LUA_REGISTRYINDEX, loadRef); lua_rawgeti(lua, LUA_REGISTRYINDEX, loadRef);
+12 -6
View File
@@ -27,6 +27,8 @@
#include "region.hpp" #include "region.hpp"
#include "statistics.hpp" #include "statistics.hpp"
#include <cmath>
//Primary interface functions //Primary interface functions
void serializePacket(SerialPacketBase*, void* dest); void serializePacket(SerialPacketBase*, void* dest);
void deserializePacket(SerialPacketBase*, void* src); void deserializePacket(SerialPacketBase*, void* src);
@@ -53,15 +55,19 @@ void deserializeRegionContent(RegionPacket*, void*);
void deserializeServer(ServerPacket*, void*); void deserializeServer(ServerPacket*, void*);
void deserializeStatistics(Statistics*, void*); void deserializeStatistics(Statistics*, void*);
/* DOCS: Keep PACKET_BUFFER_SIZE up to date /* DOCS: PACKET_BUFFER_SIZE is the memory required to store serialized data
* DOCS: SerialPacketType::REGION_CONTENT is currently the largest type of packet, read more * DOCS: SerialPacketType::REGION_CONTENT is currently the largest packet type
* The metadata used are: * Serialized packet structure:
* SerialPacketType * SerialPacketType
* room index * room index
* X & Y positon * X & Y position
* The rest is taken up by the Regions's content. * tile data (3 layers)
* solid data (bitset)
* The constants declared here are used for networking ONLY
*/ */
constexpr int PACKET_BUFFER_SIZE = sizeof(SerialPacketType) + sizeof(int) * 3 + REGION_FOOTPRINT; constexpr int REGION_TILE_FOOTPRINT = sizeof(Region::type_t) * REGION_WIDTH * REGION_HEIGHT * REGION_DEPTH;
constexpr int REGION_SOLID_FOOTPRINT = ceil(REGION_WIDTH * REGION_HEIGHT / 8.0);
constexpr int PACKET_BUFFER_SIZE = sizeof(SerialPacketType) + sizeof(int) * 3 + REGION_TILE_FOOTPRINT + REGION_SOLID_FOOTPRINT;
#endif #endif
+6 -6
View File
@@ -41,9 +41,9 @@ void serializeRegionContent(RegionPacket* packet, void* buffer) {
SERIALIZE(buffer, &packet->y, sizeof(int)); SERIALIZE(buffer, &packet->y, sizeof(int));
//tiles //tiles
for (register int i = 0; i < REGION_WIDTH; i++) { for (int i = 0; i < REGION_WIDTH; i++) {
for (register int j = 0; j < REGION_HEIGHT; j++) { for (int j = 0; j < REGION_HEIGHT; j++) {
for (register int k = 0; k < REGION_DEPTH; k++) { for (int k = 0; k < REGION_DEPTH; k++) {
*reinterpret_cast<Region::type_t*>(buffer) = packet->region->GetTile(i, j, k); *reinterpret_cast<Region::type_t*>(buffer) = packet->region->GetTile(i, j, k);
buffer = reinterpret_cast<char*>(buffer) + sizeof(Region::type_t); buffer = reinterpret_cast<char*>(buffer) + sizeof(Region::type_t);
} }
@@ -75,9 +75,9 @@ void deserializeRegionContent(RegionPacket* packet, void* buffer) {
packet->region = new Region(packet->x, packet->y); packet->region = new Region(packet->x, packet->y);
//tiles //tiles
for (register int i = 0; i < REGION_WIDTH; i++) { for (int i = 0; i < REGION_WIDTH; i++) {
for (register int j = 0; j < REGION_HEIGHT; j++) { for (int j = 0; j < REGION_HEIGHT; j++) {
for (register int k = 0; k < REGION_DEPTH; k++) { for (int k = 0; k < REGION_DEPTH; k++) {
packet->region->SetTile(i, j, k, *reinterpret_cast<Region::type_t*>(buffer)); packet->region->SetTile(i, j, k, *reinterpret_cast<Region::type_t*>(buffer));
buffer = reinterpret_cast<char*>(buffer) + sizeof(Region::type_t); buffer = reinterpret_cast<char*>(buffer) + sizeof(Region::type_t);
} }
+1 -1
View File
@@ -117,8 +117,8 @@ void ServerApplication::Init(int argc, char** argv) {
DEBUG_OUTPUT_VAR(REGION_WIDTH); DEBUG_OUTPUT_VAR(REGION_WIDTH);
DEBUG_OUTPUT_VAR(REGION_HEIGHT); DEBUG_OUTPUT_VAR(REGION_HEIGHT);
DEBUG_OUTPUT_VAR(REGION_DEPTH); DEBUG_OUTPUT_VAR(REGION_DEPTH);
DEBUG_OUTPUT_VAR(REGION_TILE_FOOTPRINT);
DEBUG_OUTPUT_VAR(REGION_SOLID_FOOTPRINT); DEBUG_OUTPUT_VAR(REGION_SOLID_FOOTPRINT);
DEBUG_OUTPUT_VAR(REGION_FOOTPRINT);
DEBUG_OUTPUT_VAR(PACKET_BUFFER_SIZE); DEBUG_OUTPUT_VAR(PACKET_BUFFER_SIZE);
DEBUG_OUTPUT_VAR(MAX_PACKET_SIZE); DEBUG_OUTPUT_VAR(MAX_PACKET_SIZE);
+2
View File
@@ -3,6 +3,8 @@ TODO: Ping-pong and keep alive system
TODO: Move the statistics into their own SQL table, instead of duplicating the structure a dozen times TODO: Move the statistics into their own SQL table, instead of duplicating the structure a dozen times
TODO: Get the rooms working, even if only via hotkeys TODO: Get the rooms working, even if only via hotkeys
TODO: Rejection messages TODO: Rejection messages
TODO: Move the map system into it's own namespace
TODO: The TileSheet class should implement the surface itself
TODO: Fix shoddy movement TODO: Fix shoddy movement
TODO: make the whole thing more fault tolerant TODO: make the whole thing more fault tolerant