diff --git a/include/chunk.h b/include/chunk.h index 087019f0e48bc11b129de055e6a0c4f9ea681a9f..5b1496c1e63ce0073d4b2974589cb128d63e7d02 100644 --- a/include/chunk.h +++ b/include/chunk.h @@ -6,6 +6,7 @@ #include <string> #include <cstdlib> #include <iostream> +#include <vector> #include "logger.h" @@ -34,6 +35,8 @@ class Chunk int valVisual(); + // std::vector<uint8_t> serialise(); + private: Logger& _logger; diff --git a/include/main.h b/include/main.h index efab70116a5388e1c74ba9649b6a8dede035f864..b16f09a36584eb0e9023e8dc1b66c34807f1fb22 100644 --- a/include/main.h +++ b/include/main.h @@ -3,6 +3,9 @@ #include <iostream> #include <cstdint> +#include <vector> +#include <algorithm> +#include <string> enum GenerationMethod { diff --git a/include/world-hex-2d.h b/include/world-hex-2d.h index e64c98e87ad4ff36783adbff05731e817b6b92de..e37fd0ab5c82d944caf3306343d2fc24cc5571ba 100644 --- a/include/world-hex-2d.h +++ b/include/world-hex-2d.h @@ -9,6 +9,7 @@ #include <string> #include <iostream> +#include <vector> class WorldHex2D @@ -32,6 +33,9 @@ class WorldHex2D void visualise(); void visualiseBlocky(); Chunk* showChunk( int s, int q, int r ); + + char* seed = "HelloWorkld"; + std::vector<uint8_t> serialise(); private: Logger& _logger; std::unordered_map<int, std::unordered_map<int, std::unordered_map<int, Chunk*>>> chunks_; diff --git a/src/chunk.cpp b/src/chunk.cpp index b13330b762959b76a9640cbe9522fe08205d9b88..68173ef92bf0cbf51e333496d10e8db325d1768a 100644 --- a/src/chunk.cpp +++ b/src/chunk.cpp @@ -9,7 +9,6 @@ Chunk::Chunk( int x, int y, int z ) } Chunk::~Chunk() { - // this->_logger.info( "Deleting Chunk" ); } void Chunk::generate(){ this->generate_random(); } void Chunk::generate_random() @@ -64,6 +63,12 @@ std::string Chunk::getString() const return str; } +/*std::vector<uint8_t> Chunk::serialise() +{ + std::vector< uint8_t > vect; + return vect; +}*/ + int Chunk::valVisual() { int val = this->density * 10 / ( 0xFFFF ); diff --git a/src/main.cpp b/src/main.cpp index 8dd269cf3782d6e20de7be928efa8e850c43396d..74b8861760bd87ddb616c0393881bc744a72597b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -11,10 +11,11 @@ int main() { SaveManager saveManager; state = Initialise; // Seed the random number generator - srand(static_cast<unsigned int>(time(nullptr))); // Genrate a Random chunk WorldHex2D map( 5 ); + + // srand( std::stoi(map.seed,nullptr,0) ); //Chunk* chunk = new Chunk( 0, 0, 0); //std::cout << chunk.getString() << std::endl; // Chunk* chunk = map.getMidChunk(); @@ -25,6 +26,12 @@ int main() { map.moveInto( 5, -2, -3 )->visualise(); map.visualise(); + std::vector< uint8_t > serial = map.serialise(); + std::cout << "************************" << std::endl + << "** VISUALISING SERIAL **" << std::endl + << "************************" << std::endl; + std::for_each( serial.begin(), serial.end(), [](uint8_t ch){ std::cout<<ch; } ); + std::cout << std::endl << "************************" << std::endl; // Menu Loop // List Saves diff --git a/src/world-hex-2d.cpp b/src/world-hex-2d.cpp index 2e7ced3105c2cbb718b041b3d33db8fbb71b9989..28c0d2a99a2b32517730d66878f147839dbdaed6 100644 --- a/src/world-hex-2d.cpp +++ b/src/world-hex-2d.cpp @@ -12,6 +12,7 @@ WorldHex2D::WorldHex2D( uint8_t width, uint8_t height, uint8_t depth) _logger( Logger::instance() ) { this->_logger.info( "Creating Hex Map" ); + this->seed = (char*)(time(nullptr)); this->generateWorld(); } @@ -25,9 +26,12 @@ WorldHex2D::~WorldHex2D() for( const auto& [keyY, value2] : value1) { for( const auto& [keyZ, chunk] : value2) - { delete chunk; } + { + if( chunk ) delete chunk; + } } } + this->_logger.info( "World Cleaned" ); } void WorldHex2D::generateWorld() { @@ -138,6 +142,14 @@ Chunk* WorldHex2D::getChunk( int chunkS, int chunkQ, int chunkR ) return nullptr; } +std::vector<uint8_t> WorldHex2D::serialise() +{ +// const uint8_t* bytes = reinterpret_cast< const uint8_t* >( &this->seed ); + const uint8_t* bytes = reinterpret_cast< const uint8_t* >( this->getChunk(0,0,0) ); + return std::vector<uint8_t>(bytes, bytes + sizeof(std::string)); +} + + Chunk* WorldHex2D::moveInto( int s, int q, int r ) { Chunk * core = this->getChunk( s, q, r );