123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- /*
- * Seven Kingdoms: Ancient Adversaries
- *
- * Copyright 1997,1998 Enlight Software Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- // Filename : OWEATHER.H
- // Description : Header file for class Weather
- // Ownership : Gilbert
- #ifndef __OWEATHER_H
- #define __OWEATHER_H
- #ifndef __ALL_H
- #include <ALL.h>
- #endif
- //--------- Define constant ----------//
- #define MAX_WEATHER_FORECAST 3
- //--------- Define WeatherType ----------//
- typedef enum _WeatherType
- {
- WEATHER_SUNNY = 0x00,
- WEATHER_CLOUDY = 0x01,
- WEATHER_RAIN = 0x02,
- WEATHER_LIGHTNING = 0x04,
- WEATHER_LIGHTN_RAIN = 0x06,
- WEATHER_WINDY = 0x08,
- WEATHER_WINDY_STORM = 0x0a,
- WEATHER_HOT_WAVE = 0x10,
- WEATHER_COLD_WAVE = 0x20,
- WEATHER_SNOW = 0x40
- } WeatherType;
- //--------- Define class Weather ----------//
- #pragma pack(1)
- class Weather
- {
- private:
- unsigned seed;
- short season_phase; // 0 = early spring, 364 = end of winter
- short day_to_quake;
- short avg_temp;
- short temp_amp;
- short wind_spd;
- // #### begin Gilbert 31/10 #######//
- long high_wind_day;
- // #### end Gilbert 31/10 #######//
- short wind_dir;
- short windy_speed;
- short tornado_count; // 0=today has tornado, 1... no. of days of last tornado
- char cur_cloud_str; // 0 (shine) to 10 (dark)
- char cur_cloud_len;
- char cur_cloud_type; // type of cloud
- int quake_frequency;
- public:
- short quake_x; // center of quake, generated on the day of quake
- short quake_y;
- public:
- void init_date(short year, short month, short day, short latitude, int quakeFreq);
- void next_day(); // called when a day has passed
- short cloud(); // return 0 (shine) to 10 (dark)
- short temp_c(); // temperature in degree C
- short temp_f(); // temperature in degree F
- // short humidity(); // relative humidity, 0 to 100
- short wind_speed(); // wind speed 0 to 100
- short wind_direct(); // 0 to 360
- double wind_direct_rad(); // in radian
- short rain_scale(); // rain scale, 0 (no rain) to 12 (heavy rain)
- short snow_scale(); // snow scale, 0 (no snow) to 8 (heavy snow)
- char is_lightning();
- char is_quake();
- char has_tornado();
- short tornado_x_loc(short maxXLoc, short maxYLoc);
- short tornado_y_loc(short maxXLoc, short maxYLoc);
- WeatherType desc();
- short quake_rate(short x, short y); // 0-100
- int write_file(File* filePtr);
- int read_file(File* filePtr);
- private:
- short base_temp();
- unsigned rand_seed(unsigned);
- };
- #pragma pack()
- // ------- define class MagicWeather -----------//
- #pragma pack(1)
- class MagicWeather
- {
- private:
- char rain_str;
- short wind_spd;
- short wind_dir;
- public:
- short rain_day;
- short wind_day;
- short lightning_day;
- public:
- void init();
- void next_day();
- void cast_rain(short duration, char rainScale);
- void cast_wind(short duration, short speed, short direction);
- void cast_lightning(short duration);
- short wind_speed(); // wind speed 0 to 100
- short wind_direct(); // 0 to 360
- double wind_direct_rad(); // in radian
- short rain_scale(); // rain scale, 0 (no rain) to 12 (heavy rain)
- int write_file(File* filePtr);
- int read_file(File* filePtr);
- friend class Weather;
- };
- #pragma pack()
- extern Weather weather, weather_forecast[MAX_WEATHER_FORECAST];
- extern MagicWeather magic_weather;
- #endif
|