Difference for server/weather.c from version 1.42 to 1.43


version 1.42 version 1.43
Line 1
 
Line 1
 /*  /*
  * static char *rcsid_weather_c =   * static char *rcsid_weather_c =
  *   "$Id: weather.c,v 1.42 2005/10/28 19:08:53 akirschbaum Exp $";   *   "$Id: weather.c,v 1.43 2005/11/01 09:02:55 akirschbaum Exp $";
  */   */
 /*  /*
     CrossFire, A Multiplayer game for X-windows      CrossFire, A Multiplayer game for X-windows
Line 38
 
Line 38
 extern unsigned long todtick;  extern unsigned long todtick;
 extern weathermap_t **weathermap;  extern weathermap_t **weathermap;
   
 int gulf_stream_speed[GULF_STREAM_WIDTH][WEATHERMAPTILESY];  static void dawn_to_dusk(const timeofday_t *tod);
 int gulf_stream_dir[GULF_STREAM_WIDTH][WEATHERMAPTILESY];  static void write_skymap(void);
 int gulf_stream_start;  static void write_pressuremap(void);
 int gulf_stream_direction;  static void read_pressuremap(void);
   static void init_pressure(void);
   static void write_winddirmap(void);
   static void read_winddirmap(void);
   static void write_windspeedmap(void);
   static void read_windspeedmap(void);
   static void init_wind(void);
   static void write_gulfstreammap(void);
   static void read_gulfstreammap(void);
   static void init_gulfstreammap(void);
   static void write_humidmap(void);
   static void read_humidmap(void);
   static void write_elevmap(void);
   static void read_elevmap(void);
   static void write_watermap(void);
   static void read_watermap(void);
   static void init_humid_elev(void);
   static void write_temperaturemap(void);
   static void read_temperaturemap(void);
   static void init_temperature(void);
   static void write_rainfallmap(void);
   static void read_rainfallmap(void);
   static void init_rainfall(void);
   static void init_weatheravoid (weather_avoids_t wa[]);
   static void perform_weather(void);
   static object *avoid_weather(int *av, mapstruct *m, int x, int y, int *gs, int grow);
   static void calculate_temperature(mapstruct *m, int wx, int wy);
   static void let_it_snow(mapstruct *m, int wx, int wy);
   static void singing_in_the_rain(mapstruct *m, int wx, int wy);
   static void plant_a_garden(mapstruct *m, int wx, int wy);
   static void change_the_world(mapstruct *m, int wx, int wy);
   static void feather_map(mapstruct *m, int wx, int wy);
   static const char *weathermap_to_worldmap_corner(int wx, int wy, int *x, int *y, int dir);
   static int polar_distance(int x, int y, int equator);
   static void update_humid(void);
   static int humid_tile(int x, int y);
   static void temperature_calc(int x, int y, const timeofday_t *tod);
   static int real_temperature(int x, int y);
   static void smooth_pressure(void);
   static void perform_pressure(void);
   static void smooth_wind(void);
   static void plot_gulfstream(void);
   static void compute_sky(void);
   static void process_rain(void);
   static void spin_globe(void);
   static void write_weather_images(void);
   
   static int gulf_stream_speed[GULF_STREAM_WIDTH][WEATHERMAPTILESY];
   static int gulf_stream_dir[GULF_STREAM_WIDTH][WEATHERMAPTILESY];
   static int gulf_stream_start;
   static int gulf_stream_direction;
   
 const int season_timechange[5][HOURS_PER_DAY] = {  static const int season_timechange[5][HOURS_PER_DAY] = {
 /* 0  1   2  3  4  5  6  7  8  9  10 11 12 13 14 1  2  3  4  5   6   7  /* 0  1   2  3  4  5  6  7  8  9  10 11 12 13 14 1  2  3  4  5   6   7
  8    9  10  11  12  13 */   8    9  10  11  12  13 */
   {0, 0,  0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1,    {0, 0,  0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1,
Line 58
 
Line 108
  1, 1, 1, 1, 1, 0}   1, 1, 1, 1, 1, 0}
 };  };
   
 const int season_tempchange[HOURS_PER_DAY] = {  static const int season_tempchange[HOURS_PER_DAY] = {
 /* 0  1   2  3  4  5  6  7  8  9  10 11 12 13 14 1  2  3  4  5   6   7  /* 0  1   2  3  4  5  6  7  8  9  10 11 12 13 14 1  2  3  4  5   6   7
  8    9  10  11  12  13 */   8    9  10  11  12  13 */
    0, 0,  0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1,     0, 0,  0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1,
Line 70
 
Line 120
  * on the ocean, and other things like that.   * on the ocean, and other things like that.
  */   */
   
 weather_avoids_t weather_avoids[] = {  static weather_avoids_t weather_avoids[] = {
     {"snow", 1, NULL},      {"snow", 1, NULL},
     {"snow2", 1, NULL},      {"snow2", 1, NULL},
     {"snow3", 1, NULL},      {"snow3", 1, NULL},
Line 103
 
Line 153
  * field is unused.   * field is unused.
  */   */
   
 weather_avoids_t growth_avoids[] = {  static weather_avoids_t growth_avoids[] = {
     {"cobblestones", 0, NULL},      {"cobblestones", 0, NULL},
     {"cobblestones2", 0, NULL},      {"cobblestones2", 0, NULL},
     {"flagstone", 0, NULL},      {"flagstone", 0, NULL},
Line 131
 
Line 181
  * The fourth field is 1 if you want to match arch->name, 0 to match ob->name.   * The fourth field is 1 if you want to match arch->name, 0 to match ob->name.
  */   */
   
 weather_replace_t weather_replace[] = {  static weather_replace_t weather_replace[] = {
     {"impossible_match", "snow5", NULL, 0},      {"impossible_match", "snow5", NULL, 0},
     {"impossible_match2", "snow4", NULL, 0}, /* placeholders */      {"impossible_match2", "snow4", NULL, 0}, /* placeholders */
     {"impossible_match3", "snow3", NULL, 0},      {"impossible_match3", "snow3", NULL, 0},
Line 160
 
Line 210
  * the meanings of all of the fields.   * the meanings of all of the fields.
  */   */
   
 weather_grow_t weather_grow[] = {  static const weather_grow_t weather_grow[] = {
     /* herb, tile, random, rfmin, rfmax, humin, humax, tempmin, tempmax, elevmin, elevmax, season */      /* herb, tile, random, rfmin, rfmax, humin, humax, tempmin, tempmax, elevmin, elevmax, season */
     {"mint", "grass", 10, 1.0, 2.0, 30, 100, 10, 25, -100, 9999, 2},      {"mint", "grass", 10, 1.0, 2.0, 30, 100, 10, 25, -100, 9999, 2},
     {"rose_red", "grass", 15, 1.0, 2.0, 30, 100, 10, 25, -100, 9999, 2},      {"rose_red", "grass", 15, 1.0, 2.0, 30, 100, 10, 25, -100, 9999, 2},
Line 188
 
Line 238
  * parameter is a base tile to lay down underneath the herb tile.   * parameter is a base tile to lay down underneath the herb tile.
  */   */
   
 weather_grow_t weather_tile[] = {  static const weather_grow_t weather_tile[] = {
     /* herb, tile, random, rfmin, rfmax, humin, humax, tempmin, tempmax, elevmin, elevmax */      /* herb, tile, random, rfmin, rfmax, humin, humax, tempmin, tempmax, elevmin, elevmax */
     {"dunes", NULL, 2, 0.0, 0.03, 0, 20, 10, 99, 0, 4000, 0},      {"dunes", NULL, 2, 0.0, 0.03, 0, 20, 10, 99, 0, 4000, 0},
     {"desert", NULL, 1, 0.0, 0.05, 0, 20, 10, 99, 0, 4000, 0},      {"desert", NULL, 1, 0.0, 0.05, 0, 20, 10, 99, 0, 4000, 0},
Line 252
 
Line 302
  *   7 3  3 7   *   7 3  3 7
  *   654  218   *   654  218
  */   */
 const uint32 directions[] = {  static const uint32 directions[] = {
     0x0000FFFF, /* south */      0x0000FFFF, /* south */
     0x000000FF, /* south west */      0x000000FF, /* south west */
     0x00FF00FF, /* west */      0x00FF00FF, /* west */
Line 264
 
Line 314
 };  };
   
 /* Colours used for weather types. */  /* Colours used for weather types. */
 const uint32 skies[] = {  static const uint32 skies[] = {
     0x000000FF, /* SKY_CLEAR         0 */      0x000000FF, /* SKY_CLEAR         0 */
     0x000000BD, /* SKY_LIGHTCLOUD    1 */      0x000000BD, /* SKY_LIGHTCLOUD    1 */
     0x0000007E, /* SKY_OVERCAST      2 */      0x0000007E, /* SKY_OVERCAST      2 */
Line 312
 
Line 362
  * time of day as an argument.   * time of day as an argument.
  */   */
   
 void dawn_to_dusk(timeofday_t *tod)  static void dawn_to_dusk(const timeofday_t *tod)
 {  {
     mapstruct *m;      mapstruct *m;
   
Line 336
 
Line 386
  * Please don't modify tod in the dependant function.   * Please don't modify tod in the dependant function.
  */   */
   
 void tick_the_clock()  void tick_the_clock(void)
 {  {
     timeofday_t tod;      timeofday_t tod;
   
Line 399
 
Line 449
   
 /* sky. We never read this map, only write it for debugging purposes */  /* sky. We never read this map, only write it for debugging purposes */
   
 void write_skymap()  static void write_skymap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 420
 
Line 470
   
 /* pressure */  /* pressure */
   
 void write_pressuremap()  static void write_pressuremap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 439
 
Line 489
     fclose(fp);      fclose(fp);
 }  }
   
 void read_pressuremap()  static void read_pressuremap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 468
 
Line 518
     fclose(fp);      fclose(fp);
 }  }
   
 void init_pressure()  static void init_pressure(void)
 {  {
     int x, y;      int x, y;
     int l, n, k, r;      int l, n, k, r;
Line 504
 
Line 554
   
 /* winddir */  /* winddir */
   
 void write_winddirmap()  static void write_winddirmap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 523
 
Line 573
     fclose(fp);      fclose(fp);
 }  }
   
 void read_winddirmap()  static void read_winddirmap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 555
 
Line 605
   
 /* windspeed */  /* windspeed */
   
 void write_windspeedmap()  static void write_windspeedmap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 574
 
Line 624
     fclose(fp);      fclose(fp);
 }  }
   
 void read_windspeedmap()  static void read_windspeedmap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 606
 
Line 656
   
 /* initialize the wind randomly. Does both direction and speed in one pass */  /* initialize the wind randomly. Does both direction and speed in one pass */
   
 void init_wind()  static void init_wind(void)
 {  {
     int x, y;      int x, y;
   
Line 619
 
Line 669
   
 /* gulf stream */  /* gulf stream */
   
 void write_gulfstreammap()  static void write_gulfstreammap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 643
 
Line 693
     fclose(fp);      fclose(fp);
 }  }
   
 void read_gulfstreammap()  static void read_gulfstreammap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 682
 
Line 732
     fclose(fp);      fclose(fp);
 }  }
   
 void init_gulfstreammap()  static void init_gulfstreammap(void)
 {  {
     int x, y, tx;      int x, y, tx;
   
Line 781
 
Line 831
   
 /* humidity */  /* humidity */
   
 void write_humidmap()  static void write_humidmap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 800
 
Line 850
     fclose(fp);      fclose(fp);
 }  }
   
 void read_humidmap()  static void read_humidmap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 834
 
Line 884
   
 /* average elevation */  /* average elevation */
   
 void write_elevmap()  static void write_elevmap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 853
 
Line 903
     fclose(fp);      fclose(fp);
 }  }
   
 void read_elevmap()  static void read_elevmap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 882
 
Line 932
   
 /* water % */  /* water % */
   
 void write_watermap()  static void write_watermap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 901
 
Line 951
     fclose(fp);      fclose(fp);
 }  }
   
 void read_watermap()  static void read_watermap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 932
 
Line 982
  * initialize both humidity and elevation   * initialize both humidity and elevation
  */   */
   
 void init_humid_elev()  static void init_humid_elev(void)
 {  {
     int x, y, tx, ty, nx, ny, ax, ay, j;      int x, y, tx, ty, nx, ny, ax, ay, j;
     int spwtx, spwty;      int spwtx, spwty;
Line 1056
 
Line 1106
   
 /* temperature */  /* temperature */
   
 void write_temperaturemap()  static void write_temperaturemap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 1075
 
Line 1125
     fclose(fp);      fclose(fp);
 }  }
   
 void read_temperaturemap()  static void read_temperaturemap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 1102
 
Line 1152
     fclose(fp);      fclose(fp);
 }  }
   
 void init_temperature()  static void init_temperature(void)
 {  {
     int x, y;      int x, y;
     timeofday_t tod;      timeofday_t tod;
Line 1115
 
Line 1165
   
 /* rainfall */  /* rainfall */
   
 void write_rainfallmap()  static void write_rainfallmap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 1134
 
Line 1184
     fclose(fp);      fclose(fp);
 }  }
   
 void read_rainfallmap()  static void read_rainfallmap(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;
Line 1158
 
Line 1208
     fclose(fp);      fclose(fp);
 }  }
   
 void init_rainfall()  static void init_rainfall(void)
 {  {
     int x, y;      int x, y;
     int days;      int days;
Line 1189
 
Line 1239
   
   
   
 void init_weatheravoid (weather_avoids_t wa[]){  static void init_weatheravoid (weather_avoids_t wa[]){
  int i;   int i;
  for (i=0; wa[i].name != NULL; i++) {   for (i=0; wa[i].name != NULL; i++) {
  wa[i].what=find_archetype(wa[i].name);   wa[i].what=find_archetype(wa[i].name);
  }   }
 }  }
   
 int wmperformstartx;  static int wmperformstartx;
 int wmperformstarty;  static int wmperformstarty;
   
 /*  /*
  * This function initializes the weather system.  It should be called once,   * This function initializes the weather system.  It should be called once,
Line 1205
 
Line 1255
  */   */
   
   
 void init_weather()  void init_weather(void)
 {  {
     int y, tx, ty;      int y, tx, ty;
     char filename[MAX_BUF];      char filename[MAX_BUF];
Line 1291
 
Line 1341
  * etc etc etc.  Not actual *weather*, but weather *effects*.   * etc etc etc.  Not actual *weather*, but weather *effects*.
  */   */
   
 void perform_weather()  static void perform_weather(void)
 {  {
     mapstruct *m;      mapstruct *m;
     char filename[MAX_BUF];      char filename[MAX_BUF];
Line 1394
 
Line 1444
  * destroy/melt it.   * destroy/melt it.
  */   */
   
 object *avoid_weather(int *av, mapstruct *m, int x, int y, int *gs, int grow)  static object *avoid_weather(int *av, mapstruct *m, int x, int y, int *gs, int grow)
 {  {
     int avoid, gotsnow, i, n;      int avoid, gotsnow, i, n;
   
Line 1446
 
Line 1496
 /* Temperature is used in a lot of weather function.  /* Temperature is used in a lot of weather function.
  * This need to be precalculated before used.   * This need to be precalculated before used.
  */   */
 void calculate_temperature(mapstruct *m, int wx, int wy){  static void calculate_temperature(mapstruct *m, int wx, int wy){
  int x,y;   int x,y;
     for (x=0; x < settings.worldmaptilesizex; x++) {      for (x=0; x < settings.worldmaptilesizex; x++) {
  for (y=0; y < settings.worldmaptilesizey; y++) {   for (y=0; y < settings.worldmaptilesizey; y++) {
Line 1462
 
Line 1512
  * weather_effect()   * weather_effect()
  */   */
   
 void let_it_snow(mapstruct *m, int wx, int wy)  static void let_it_snow(mapstruct *m, int wx, int wy)
 {  {
     int x, y, i;      int x, y, i;
     int nx, ny, j, d;      int nx, ny, j, d;
     int avoid, two, temp, sky, gotsnow, found, nodstk;      int avoid, two, temp, sky, gotsnow, found, nodstk;
     char *doublestack, *doublestack2;      const char *doublestack, *doublestack2;
     object *ob, *tmp, *oldsnow, *topfloor;      object *ob, *tmp, *oldsnow, *topfloor;
     archetype *at;      archetype *at;
   
Line 1680
 
Line 1730
  * weather_effect()   * weather_effect()
  */   */
   
 void singing_in_the_rain(mapstruct *m, int wx, int wy)  static void singing_in_the_rain(mapstruct *m, int wx, int wy)
 {  {
     int x, y, i;      int x, y, i;
     int nx, ny, d, j;      int nx, ny, d, j;
     int avoid, two, temp, sky, gotsnow, found, nodstk;      int avoid, two, temp, sky, gotsnow, found, nodstk;
     object *ob, *tmp, *oldsnow, *topfloor;      object *ob, *tmp, *oldsnow, *topfloor;
     char *doublestack, *doublestack2;      const char *doublestack, *doublestack2;
     archetype *at;      archetype *at;
   
     for (nx=0; nx < settings.worldmaptilesizex; nx++) {      for (nx=0; nx < settings.worldmaptilesizex; nx++) {
Line 1900
 
Line 1950
  * weather_effect()   * weather_effect()
  */   */
   
 void plant_a_garden(mapstruct *m, int wx, int wy)  static void plant_a_garden(mapstruct *m, int wx, int wy)
 {  {
     int x, y, i;      int x, y, i;
     int avoid, two, temp, sky, gotsnow, found, days;      int avoid, two, temp, sky, gotsnow, found, days;
Line 1999
 
Line 2049
  * This should be called from weather_effect()   * This should be called from weather_effect()
  */   */
   
 void change_the_world(mapstruct *m, int wx, int wy)  static void change_the_world(mapstruct *m, int wx, int wy)
 {  {
     int x, y, i;      int x, y, i;
     int nx, ny, j, d;      int nx, ny, j, d;
Line 2135
 
Line 2185
  * This should be called from weather_effect()   * This should be called from weather_effect()
  */   */
   
 void feather_map(mapstruct *m, int wx, int wy)  static void feather_map(mapstruct *m, int wx, int wy)
 {  {
     int x, y, i, nx, ny, j;      int x, y, i, nx, ny, j;
     int avoid, two, gotsnow, nodstk;      int avoid, two, gotsnow, nodstk;
Line 2278
 
Line 2328
  * value is the name of the map that corner resides in.   * value is the name of the map that corner resides in.
  */   */
   
 const char *weathermap_to_worldmap_corner(int wx, int wy, int *x, int *y, int dir)  static const char *weathermap_to_worldmap_corner(int wx, int wy, int *x, int *y, int dir)
 {  {
     int spwtx, spwty;      int spwtx, spwty;
     int tx, ty, nx, ny;      int tx, ty, nx, ny;
Line 2317
 
Line 2367
  */   */
   
   
 int polar_distance(int x, int y, int equator)  static int polar_distance(int x, int y, int equator)
 {  {
     if ((x+y) > equator) { /* south pole */      if ((x+y) > equator) { /* south pole */
  x = WEATHERMAPTILESX - x;   x = WEATHERMAPTILESX - x;
Line 2334
 
Line 2384
  * update the humidity for all weathermap tiles.   * update the humidity for all weathermap tiles.
  */   */
   
 void update_humid()  static void update_humid(void)
 {  {
     int x, y;      int x, y;
   
Line 2349
 
Line 2399
  * square.   * square.
  */   */
   
 int humid_tile(int x, int y)  static int humid_tile(int x, int y)
 {  {
     int ox, oy, humid;      int ox, oy, humid;
   
Line 2390
 
Line 2440
  * time of day in *tod.   * time of day in *tod.
  */   */
   
 void temperature_calc(int x, int y, timeofday_t *tod)  static void temperature_calc(int x, int y, const timeofday_t *tod)
 {  {
     int dist, equator, elev, n;      int dist, equator, elev, n;
     float diff, tdiff;      float diff, tdiff;
Line 2426
 
Line 2476
  * weathermap coordinates.   * weathermap coordinates.
 */  */
   
 int real_temperature(int x, int y)  static int real_temperature(int x, int y)
 {  {
     int i, temp;      int i, temp;
     timeofday_t tod;      timeofday_t tod;
Line 2487
 
Line 2537
   
 /* this code simply smooths the pressure map */  /* this code simply smooths the pressure map */
   
 void smooth_pressure()  static void smooth_pressure(void)
 {  {
     int x, y;      int x, y;
     int k;      int k;
Line 2528
 
Line 2578
  * smoothing algorithim.. This causes the pressure to change very slowly   * smoothing algorithim.. This causes the pressure to change very slowly
  */   */
   
 void perform_pressure()  static void perform_pressure(void)
 {  {
     int x, y, l, n, j, k;      int x, y, l, n, j, k;
   
Line 2587
 
Line 2637
  * a quick pass to update the windspeed.   * a quick pass to update the windspeed.
  */   */
   
 void smooth_wind()  static void smooth_wind(void)
 {  {
     int x, y;      int x, y;
     int tx, ty, dx, dy;      int tx, ty, dx, dy;
Line 2651
 
Line 2701
  * to avoid the windsmoothing scrambling the jet stream.   * to avoid the windsmoothing scrambling the jet stream.
  */   */
   
 void plot_gulfstream()  static void plot_gulfstream(void)
 {  {
     int x, y, tx;      int x, y, tx;
   
Line 2740
 
Line 2790
  * square.   * square.
  */   */
   
 void compute_sky()  static void compute_sky(void)
 {  {
     int x, y;      int x, y;
     int temp;      int temp;
Line 2835
 
Line 2885
  * Keep track of how much rain has fallen in a given weathermap square.   * Keep track of how much rain has fallen in a given weathermap square.
  */   */
   
 void process_rain()  static void process_rain(void)
 {  {
     int x, y, rain;      int x, y, rain;
   
Line 2857
 
Line 2907
  * What the hell, lets spin the planet backwards.   * What the hell, lets spin the planet backwards.
  */   */
   
 void spin_globe()  static void spin_globe(void)
 {  {
  int x, y;   int x, y;
  int buffer_humid;   int buffer_humid;
Line 2880
 
Line 2930
  * Writes two other files that are useful for creating animations and web pages.   * Writes two other files that are useful for creating animations and web pages.
  */   */
   
 void write_weather_images()  static void write_weather_images(void)
 {  {
     char filename[MAX_BUF];      char filename[MAX_BUF];
     FILE *fp;      FILE *fp;


Legend:
line(s) removed in v.1.42 
line(s) changed
 line(s) added in v.1.43

File made using version 1.98 of cvs2html by leaf at 2011-07-21 17:53