/****************************************************************************
* ___________.__ .__ *
* \_ _____/| | ___.__. _____|__|__ __ _____ *
* | __)_ | |< | |/ ___/ | | \/ \ *
* | \| |_\___ |\___ \| | | / Y Y \ *
* /_______ /|____/ ____/____ >__|____/|__|_| / *
* \/ \/ \/ Engine \/ *
* A SMAUG Derived Game Engine. *
* ------------------------------------------------------------------------ *
* Elysium Engine Copyright 1999-2009 by Steven Loar *
* Elysium Engine Development Team: Kayle (Steven Loar), Venia, Scoyn, *
* and Mikon. *
* ------------------------------------------------------------------------ *
* [S]imulated [M]edieval [A]dventure multi[U]ser [G]ame *
* SMAUG 1.4 (C) 1994, 1995, 1996, 1998 by Derek Snider *
* SMAUG code team: Thoric, Altrag, Blodkai, Narn, Haus, Scryn, Rennard, *
* Swordbearer, Gorog, Grishnakh, Nivek, Tricops and Fireblade *
* ------------------------------------------------------------------------ *
* Merc 2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael *
* Chastain, Michael Quan, and Mitchell Tse. *
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. *
* ------------------------------------------------------------------------ *
* Weather System Header *
****************************************************************************
* Base Weather Model Copyright (c) 2007 Chris Jacobson *
****************************************************************************/
/*
* This might not have all the bells and whistles I'd intended, and it might be
* missing some of the things people wanted. But I did the best I could, and it's
* sure as hell better than the crap that used to be there. -Kayle
*/
//Change these values to expand or contract your weather map according to your world size.
const int WEATHER_SIZE_X = 10; // number of cells wide
const int WEATHER_SIZE_Y = 10; // number of cells tall
//Hemisphere defines.
const int HEMISPHERE_NORTH = 0;
const int HEMISPHERE_SOUTH = 1;
const int HEMISPHERE_MAX = 2;
//Climate defines - Add more if you want, but make sure you add appropriate data to the
// system itself in EnforceClimateConditions()
const int CLIMATE_RAINFOREST = 0;
const int CLIMATE_SAVANNA = 1;
const int CLIMATE_DESERT = 2;
const int CLIMATE_STEPPE = 3;
const int CLIMATE_CHAPPARAL = 4;
const int CLIMATE_GRASSLANDS = 5;
const int CLIMATE_DECIDUOUS = 6;
const int CLIMATE_TAIGA = 7;
const int CLIMATE_TUNDRA = 8;
const int CLIMATE_ALPINE = 9;
const int CLIMATE_ARCTIC = 10;
const int MAX_CLIMATE = 11;
// File that stores Weather Information
#define WEATHER_FILE "weathermap.dat"
//So it can be utilized from other parts of the code
/*
extern struct WeatherCell weatherMap[WEATHER_SIZE_X][WEATHER_SIZE_Y];
extern struct WeatherCell weatherDelta[WEATHER_SIZE_X][WEATHER_SIZE_Y];
*/
//Defines
void InitializeWeatherMap(void);
void UpdateWeather(void);
void RandomizeCells(void);
void save_weathermap(void);
bool load_weathermap(void);
int get_hemisphere(char *type);
int get_climate(char *type);
struct WeatherCell *getWeatherCell(AREA_DATA *pArea);
void IncreaseTemp(struct WeatherCell *cell, int change);
void DecreaseTemp(struct WeatherCell *cell, int change);
void IncreasePrecip(struct WeatherCell *cell, int change);
void DecreasePrecip(struct WeatherCell *cell, int change);
void IncreasePressure(struct WeatherCell *cell, int change);
void DecreasePressure(struct WeatherCell *cell, int change);
void IncreaseEnergy(struct WeatherCell *cell, int change);
void DecreaseEnergy(struct WeatherCell *cell, int change);
void IncreaseCloudCover(struct WeatherCell *cell, int change);
void DecreaseCloudCover(struct WeatherCell *cell, int change);
void IncreaseHumidity(struct WeatherCell *cell, int change);
void DecreaseHumidity(struct WeatherCell *cell, int change);
void IncreaseWindX(struct WeatherCell *cell, int change);
void DecreaseWindX(struct WeatherCell *cell, int change);
void IncreaseWindY(struct WeatherCell *cell, int change);
void DecreaseWindY(struct WeatherCell *cell, int change);
int getCloudCover(struct WeatherCell *cell);
int getTemp(struct WeatherCell *cell);
int getEnergy(struct WeatherCell *cell);
int getPressure(struct WeatherCell *cell);
int getHumidity(struct WeatherCell *cell);
int getPrecip(struct WeatherCell *cell);
int getWindX(struct WeatherCell *cell);
int getWindY(struct WeatherCell *cell);
bool isExtremelyCloudy(int cloudCover);
bool isModeratelyCloudy(int cloudCover);
bool isPartlyCloudy(int cloudCover);
bool isCloudy(int cloudCover);
bool isSwelteringHeat(int temp);
bool isVeryHot(int temp);
bool isHot(int temp);
bool isWarm(int temp);
bool isTemperate(int temp);
bool isCool(int temp);
bool isChilly(int temp);
bool isCold(int temp);
bool isFrosty(int temp);
bool isFreezing(int temp);
bool isReallyCold(int temp);
bool isVeryCold(int temp);
bool isExtremelyCold(int temp);
bool isStormy(int energy);
bool isHighPressure(int pressure);
bool isLowPressure(int pressure);
bool isExtremelyHumid(int humidity);
bool isModeratelyHumid(int humidity);
bool isMinorlyHumid(int humidity);
bool isHumid(int humidity);
bool isTorrentialDownpour(int precip);
bool isRainingCatsAndDogs(int precip);
bool isPouring(int precip);
bool isRaingingHeavily(int precip);
bool isDownpour(int precip);
bool isRainingSteadily(int precip);
bool isRaining(int precip);
bool isRainingLightly(int precip);
bool isDrizzling(int precip);
bool isMisting(int precip);
bool isCalmWindE(int windx);
bool isBreezyWindE(int windx);
bool isBlusteryWindE(int windx);
bool isWindyWindE(int windx);
bool isGustyWindE(int windx);
bool isGaleForceWindE(int windx);
bool isCalmWindW(int windx);
bool isBreezyWindW(int windx);
bool isBlusteryWindW(int windx);
bool isWindyWindW(int windx);
bool isGustyWindW(int windx);
bool isGaleForceWindW(int windx);
bool isCalmWindN(int windy);
bool isBreezyWindN(int windy);
bool isBlusteryWindN(int windy);
bool isWindyWindN(int windy);
bool isGustyWindN(int windy);
bool isGaleForceWindN(int windy);
bool isCalmWindS(int windy);
bool isBreezyWindS(int windy);
bool isBlusteryWindS(int windy);
bool isWindyWindS(int windy);
bool isGustyWindS(int windy);
bool isGaleForceWindS(int windy);