/**
Copyright: Copyright (c) 2014-2017 Andrey Penechko.
License: $(WEB boost.org/LICENSE_1_0.txt, Boost License 1.0).
Authors: Andrey Penechko.
*/
module voxelman.core.config;

import voxelman.math;
public import voxelman.globalconfig;

alias BlockId = ushort;
alias BlockMetadata = ubyte;
alias TimestampType = uint;
alias DimensionId = short;

struct BlockIdAndMeta
{
	BlockId id;
	BlockMetadata metadata;
}

enum CHUNK_SIZE = 32;
enum CHUNK_SIZE_BITS = CHUNK_SIZE - 1;
enum CHUNK_SIZE_SQR = CHUNK_SIZE * CHUNK_SIZE;
enum CHUNK_SIZE_CUBE = CHUNK_SIZE * CHUNK_SIZE * CHUNK_SIZE;
enum CHUNK_SIZE_VECTOR = ivec3(CHUNK_SIZE, CHUNK_SIZE, CHUNK_SIZE);

enum REGION_SIZE = 16;
enum REGION_SIZE_SQR = REGION_SIZE * REGION_SIZE;
enum REGION_SIZE_CUBE = REGION_SIZE * REGION_SIZE * REGION_SIZE;

immutable string DEFAULT_WORLD_NAME = "world";

enum DEFAULT_VIEW_RADIUS = 6;
enum MIN_VIEW_RADIUS = 1;
enum MAX_VIEW_RADIUS = 100;
enum ENABLE_RLE_PACKET_COMPRESSION = false;

enum SERVER_UPDATES_PER_SECOND = 60;
enum SERVER_PORT = 1234;

enum QUEUE_LENGTH = 1024*1024*1;
enum MAX_LOAD_QUEUE_LENGTH = QUEUE_LENGTH / 2;