#if defined(USE_CLOUDSKY) && !defined(_WL_CLOUDSKY_H_)
#define _WL_CLOUDSKY_H_

typedef struct
{
	int length;
	int startAndDir;
} colormapentry_t;

typedef struct
{
	int numColors;
	colormapentry_t *entries;
} colormap_t;

typedef struct
{
	// The seed defines the look of the sky and every value (0-4294967295)
	// describes an unique sky. You can play around with these inside the game
	// when pressing <TAB>+Z in debug mode. There you'll be able to change the
	// active seed to find out a value, which is suitable for your needs.
	uint32_t seed;

	// The speed defines how fast the clouds will move (0-65535)
	uint32_t speed;

	// The angle defines the move direction (0-359)
	uint32_t angle;

	// An index selecting the color map to be used for this sky definition.
	// This value can also be chosen with <TAB>+Z
	uint32_t colorMapIndex;
} cloudsky_t;

extern cloudsky_t *curSky;
extern colormap_t colorMaps[];
extern const int numColorMaps;

void InitSky();
void DrawClouds(byte *vbuf, unsigned vbufPitch, int min_wallheight);

#ifndef USE_FEATUREFLAGS
int GetCloudSkyDefID();
#endif

#endif
