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

public import voxelman.globalconfig;
import std.experimental.logger;
import dlib.math.vector : vec3, ivec3, ivec4, uvec2;

alias BlockType = ubyte;
alias TimestampType = ulong;

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;

// directories
enum string WORLD_FILE_NAME = "worldinfo.cbor";
immutable string DEFAULT_WORLD_NAME = "world";

enum NUM_WORKERS = 4;
enum DEFAULT_VIEW_RADIUS = 5;
enum MIN_VIEW_RADIUS = 1;
enum MAX_VIEW_RADIUS = 100;
enum WORLD_SIZE = 12; // chunks
enum BOUND_WORLD = false;

enum START_POS = vec3(0, 100, 0);

enum ENABLE_RLE_PACKET_COMPRESSION = true;

enum SERVER_UPDATES_PER_SECOND = 20;
enum size_t SERVER_FRAME_TIME_USECS = 1_000_000 / SERVER_UPDATES_PER_SECOND;
enum SERVER_PORT = 1234;

enum MAX_LOAD_QUEUE_LENGTH = 1000;