28 lines
953 B
C++
28 lines
953 B
C++
#include <cstring>
|
|
#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);
|
|
|
|
/* Send a 3x3 grid of chunks around the player's current chunk. */
|
|
for(int x = center_x; x <= center_x+1; ++x) {
|
|
for(int z = center_z-1; z <= center_z+1; ++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));
|
|
}
|
|
}
|
|
}
|