42 lines
800 B
C
42 lines
800 B
C
#ifndef WORLDGEN_H
|
|
#define WORLDGEN_H
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include "noise.h"
|
|
|
|
#define CHUNK_SIZE 16
|
|
#define CHUNK_HEIGHT 256
|
|
|
|
enum BlockId {
|
|
BLOCK_BEDROCK = 0,
|
|
BLOCK_STONE = 1,
|
|
BLOCK_DIRT = 2,
|
|
BLOCK_GRASS = 3,
|
|
BLOCK_WATER = 4,
|
|
BLOCK_AIR = 5,
|
|
BLOCK_OAK_LOG = 6,
|
|
BLOCK_OAK_LEAVES = 7,
|
|
BLOCK_BIRCH_LOG = 8,
|
|
BLOCK_BIRCH_LEAVES = 9,
|
|
BLOCK_COAL = 10
|
|
};
|
|
|
|
typedef struct {
|
|
int chunk_x;
|
|
int chunk_z;
|
|
uint16_t heightmap[CHUNK_SIZE][CHUNK_SIZE];
|
|
uint16_t blocks[CHUNK_HEIGHT][CHUNK_SIZE][CHUNK_SIZE];
|
|
} chunk_data;
|
|
|
|
typedef struct {
|
|
simplex_noise noise;
|
|
int sea_level;
|
|
int world_seed;
|
|
} worldgen_ctx;
|
|
|
|
void worldgen_init(worldgen_ctx *ctx, int world_seed, int sea_level);
|
|
void worldgen_generate_chunk(worldgen_ctx *ctx, int chunk_x, int chunk_z, chunk_data *out);
|
|
|
|
#endif
|