#include #include "bettola/game/chunk.h" #include "game.h" #include "bettola/network/chunk_message.h" #include "bettola/network/message.h" #include "player.h" void Game::_send_chunks_around(Player* player, int center_x, int center_z) { BettolaLib::Network::MessageHeader header; header.type = BettolaLib::Network::MessageType::ChunkData; header.size = sizeof(BettolaLib::Network::ChunkMessage); const int view_distance = 4; /* Load a 9x9 grid (4 chunks in each direction). */ /* Send a grid of chunks around the players current chunk. */ for(int x = center_x - view_distance; x <= center_x + view_distance; ++x) { for(int z = center_z - view_distance; z <= center_z + view_distance; ++z) { BettolaLib::Game::Chunk& chunk = _world.get_chunk(x, z); BettolaLib::Network::ChunkMessage msg; msg.chunk_x = x; msg.chunk_z = z; memcpy(msg.heightmap, chunk.heightmap.data(), chunk.heightmap.size() * sizeof(float)); player->get_socket().send(&header, sizeof(header)); player->get_socket().send(&msg, sizeof(msg)); } } }