Crossfire Server, Branch 1.12  R12190
maps.c
Go to the documentation of this file.
00001 /* $Id: maps.c 11578 2009-02-23 22:02:27Z lalo $ */
00002 
00003 /* This program will generate ppm files from each of the weathermaps.
00004    Mostly for debugging, but curious DM's might find it useful to see
00005    the weather.
00006 */
00007 
00008 #include <stdio.h>
00009 #ifndef MIN
00010 #define MIN(x, y) ((x) < (y) ? (x) : (y))
00011 #endif
00012 #ifndef MAX
00013 #define MAX(x, y) ((x) > (y) ? (x) : (y))
00014 #endif
00015 
00016 int main(void) {
00017     int map[100][100];
00018     int x, y;
00019     int n, i, j, k, l, z, w, r, a;
00020     FILE *fp, *lp;
00021     int junk;
00022     char fn[6];
00023 
00024     sprintf(fn, "winddirmap");
00025     lp = fopen(fn, "r");
00026     fp = fopen("winddirmap.ppm", "w");
00027     fprintf(fp, "P3 %d %d 255\n", 100, 100);
00028     for (j = 0; j < 100; j++) {
00029         for (k = 0; k < 100; k++) {
00030             fscanf(lp, "%d ", &map[j][k]);
00031             junk = map[j][k];
00032             fprintf(lp, "%d ", map[j][k]);
00033             switch (junk) {
00034             case 0: fprintf(fp, "255 255 255 "); break;
00035             case 1: fprintf(fp, "0 0 0 "); break;
00036             case 2: fprintf(fp, "0 0 127 "); break;
00037             case 3: fprintf(fp, "0 0 255 "); break;
00038             case 4: fprintf(fp, "127 127 255 "); break;
00039             case 5: fprintf(fp, "127 127 127 "); break;
00040             case 6: fprintf(fp, "127 255 127 "); break;
00041             case 7: fprintf(fp, "0 255 0 "); break;
00042             case 8: fprintf(fp, "0 127 0 "); break;
00043             }
00044             fprintf(fp, "\n");
00045             fscanf(lp, "\n");
00046         }
00047     }
00048     fclose(fp);
00049     fclose(lp);
00050 
00051     sprintf(fn, "pressuremap");
00052     lp = fopen(fn, "r");
00053     fp = fopen("pressuremap.ppm", "w");
00054     fprintf(fp, "P3 %d %d 255\n", 100, 100);
00055     for (j = 0; j < 100; j++) {
00056         for (k = 0; k < 100; k++) {
00057             fscanf(lp, "%d ", &map[j][k]);
00058             junk = map[j][k];
00059             fprintf(lp, "%d ", map[j][k]);
00060             if (junk < 1000)
00061                 fprintf(fp, "0 0 %d ", 255-(1000-junk)*3);
00062             else
00063                 fprintf(fp, "0 %d 0 ", 255+(1000-junk)*3);
00064             fprintf(fp, "\n");
00065             fscanf(lp, "\n");
00066         }
00067     }
00068     fclose(fp);
00069     fclose(lp);
00070 
00071     sprintf(fn, "windspeedmap");
00072     lp = fopen(fn, "r");
00073     fp = fopen("windspeedmap.ppm", "w");
00074     fprintf(fp, "P3 %d %d 255\n", 100, 100);
00075     for (j = 0; j < 100; j++) {
00076         for (k = 0; k < 100; k++) {
00077             fscanf(lp, "%d ", &map[j][k]);
00078             junk = map[j][k];
00079             fprintf(lp, "%d ", map[j][k]);
00080             fprintf(fp, "0 %d 0 ", junk*5);
00081             fprintf(fp, "\n");
00082             fscanf(lp, "\n");
00083         }
00084     }
00085     fclose(fp);
00086     fclose(lp);
00087 
00088     sprintf(fn, "humidmap");
00089     lp = fopen(fn, "r");
00090     fp = fopen("humidmap.ppm", "w");
00091     fprintf(fp, "P3 %d %d 255\n", 100, 100);
00092     for (j = 0; j < 100; j++) {
00093         for (k = 0; k < 100; k++) {
00094             fscanf(lp, "%d ", &map[j][k]);
00095             junk = map[j][k];
00096             fprintf(lp, "%d ", map[j][k]);
00097             fprintf(fp, "0 0 %d ", 255-(junk*2));
00098             fprintf(fp, "\n");
00099             fscanf(lp, "\n");
00100         }
00101     }
00102     fclose(fp);
00103     fclose(lp);
00104 
00105     sprintf(fn, "temperaturemap");
00106     lp = fopen(fn, "r");
00107     fp = fopen("temperaturemap.ppm", "w");
00108     fprintf(fp, "P3 %d %d 255\n", 100, 100);
00109     for (j = 0; j < 100; j++) {
00110         for (k = 0; k < 100; k++) {
00111             fscanf(lp, "%d ", &map[j][k]);
00112             junk = map[j][k];
00113             fprintf(lp, "%d ", map[j][k]);
00114             if (junk < 0)
00115                 fprintf(fp, "0 0 %d ", 255+junk*5);
00116             else
00117                 fprintf(fp, "0 %d 0 ", junk*5);
00118             fprintf(fp, "\n");
00119             fscanf(lp, "\n");
00120         }
00121     }
00122     fclose(fp);
00123     fclose(lp);
00124 
00125     sprintf(fn, "skymap");
00126     lp = fopen(fn, "r");
00127     if (lp == NULL)
00128         exit(0);
00129     fp = fopen("skymap.ppm", "w");
00130     fprintf(fp, "P3 %d %d 255\n", 100, 100);
00131     for (j = 0; j < 100; j++) {
00132         for (k = 0; k < 100; k++) {
00133             fscanf(lp, "%d ", &map[j][k]);
00134             junk = map[j][k];
00135             fprintf(lp, "%d ", map[j][k]);
00136             switch (junk) {
00137             case 0: fprintf(fp, "0 0 255 "); break;
00138             case 1: fprintf(fp, "230 230 230 "); break;
00139             case 2: fprintf(fp, "170 170 170 "); break;
00140             case 3: fprintf(fp, "120 120 120 "); break;
00141             case 4: fprintf(fp, "80 80 80 "); break;
00142             case 5: fprintf(fp, "40 40 40 "); break;
00143             case 6: fprintf(fp, "10 10 10 "); break;
00144             case 7: fprintf(fp, "0 255 0 "); break;
00145             case 8: fprintf(fp, "255 0 0 "); break;
00146             case 13: fprintf(fp, "230 230 255 "); break;
00147             case 14: fprintf(fp, "170 170 255 "); break;
00148             case 15: fprintf(fp, "120 120 255 "); break;
00149             case 16: fprintf(fp, "80 80 255 "); break;
00150             }
00151             fprintf(fp, "\n");
00152             fscanf(lp, "\n");
00153         }
00154     }
00155     fclose(fp);
00156     fclose(lp);
00157 }