Crossfire Server, Branch 1.12
R12190
|
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 }