#ifndef WORLD_WEATHER_H #define WORLD_WEATHER_H /* * Weather: dry spells and showers (on their own, or set in the dev menu). * While it rains, drops fall round the camera (none under a roof), the * ground near you gets wet (puddles, mud: see wetness.c), everything looks * darker and wetter, the sky greys over, a fire burns down faster. People go * in out of it (ai.c shelter). */ #include "world/world.h" typedef enum { WEATHER_AUTO, WEATHER_DRY, WEATHER_SHOWER, WEATHER_RAIN, WEATHER_KINDS } WeatherKind; typedef enum { WIND_AUTO, WIND_CALM, WIND_BREEZE, WIND_STORM, WIND_KINDS } WindKind; #define WIND_MAX 14.0f /* m/s: the windiest it gets (gusts on top) */ #define RAIN_DROPS 1400 typedef struct RainDrops { Vec3 p[RAIN_DROPS]; bool hidden[RAIN_DROPS]; /* (under a roof: not drawn) */ unsigned rng; } RainDrops; void Weather_init(World *world); /* dt real, game_dt game seconds. */ void Weather_update(World *world, float dt, float game_dt); void Weather_draw(World *world, Renderer *renderer); /* Is there a roof (anything) over this spot? */ bool Weather_covered(const World *world, Vec3 p); const char *Weather_name(WeatherKind kind); const char *Weather_windName(WindKind kind); /* m/s the wind blows now (gusts and all). */ float Weather_windSpeed(const World *world); #endif /* WORLD_WEATHER_H */