server-1.12/utils/maps.c

158 lines
4.7 KiB
C

/* $Id: maps.c 11578 2009-02-23 22:02:27Z lalo $ */
/* This program will generate ppm files from each of the weathermaps.
Mostly for debugging, but curious DM's might find it useful to see
the weather.
*/
#include <stdio.h>
#ifndef MIN
#define MIN(x, y) ((x) < (y) ? (x) : (y))
#endif
#ifndef MAX
#define MAX(x, y) ((x) > (y) ? (x) : (y))
#endif
int main(void) {
int map[100][100];
int x, y;
int n, i, j, k, l, z, w, r, a;
FILE *fp, *lp;
int junk;
char fn[6];
sprintf(fn, "winddirmap");
lp = fopen(fn, "r");
fp = fopen("winddirmap.ppm", "w");
fprintf(fp, "P3 %d %d 255\n", 100, 100);
for (j = 0; j < 100; j++) {
for (k = 0; k < 100; k++) {
fscanf(lp, "%d ", &map[j][k]);
junk = map[j][k];
fprintf(lp, "%d ", map[j][k]);
switch (junk) {
case 0: fprintf(fp, "255 255 255 "); break;
case 1: fprintf(fp, "0 0 0 "); break;
case 2: fprintf(fp, "0 0 127 "); break;
case 3: fprintf(fp, "0 0 255 "); break;
case 4: fprintf(fp, "127 127 255 "); break;
case 5: fprintf(fp, "127 127 127 "); break;
case 6: fprintf(fp, "127 255 127 "); break;
case 7: fprintf(fp, "0 255 0 "); break;
case 8: fprintf(fp, "0 127 0 "); break;
}
fprintf(fp, "\n");
fscanf(lp, "\n");
}
}
fclose(fp);
fclose(lp);
sprintf(fn, "pressuremap");
lp = fopen(fn, "r");
fp = fopen("pressuremap.ppm", "w");
fprintf(fp, "P3 %d %d 255\n", 100, 100);
for (j = 0; j < 100; j++) {
for (k = 0; k < 100; k++) {
fscanf(lp, "%d ", &map[j][k]);
junk = map[j][k];
fprintf(lp, "%d ", map[j][k]);
if (junk < 1000)
fprintf(fp, "0 0 %d ", 255-(1000-junk)*3);
else
fprintf(fp, "0 %d 0 ", 255+(1000-junk)*3);
fprintf(fp, "\n");
fscanf(lp, "\n");
}
}
fclose(fp);
fclose(lp);
sprintf(fn, "windspeedmap");
lp = fopen(fn, "r");
fp = fopen("windspeedmap.ppm", "w");
fprintf(fp, "P3 %d %d 255\n", 100, 100);
for (j = 0; j < 100; j++) {
for (k = 0; k < 100; k++) {
fscanf(lp, "%d ", &map[j][k]);
junk = map[j][k];
fprintf(lp, "%d ", map[j][k]);
fprintf(fp, "0 %d 0 ", junk*5);
fprintf(fp, "\n");
fscanf(lp, "\n");
}
}
fclose(fp);
fclose(lp);
sprintf(fn, "humidmap");
lp = fopen(fn, "r");
fp = fopen("humidmap.ppm", "w");
fprintf(fp, "P3 %d %d 255\n", 100, 100);
for (j = 0; j < 100; j++) {
for (k = 0; k < 100; k++) {
fscanf(lp, "%d ", &map[j][k]);
junk = map[j][k];
fprintf(lp, "%d ", map[j][k]);
fprintf(fp, "0 0 %d ", 255-(junk*2));
fprintf(fp, "\n");
fscanf(lp, "\n");
}
}
fclose(fp);
fclose(lp);
sprintf(fn, "temperaturemap");
lp = fopen(fn, "r");
fp = fopen("temperaturemap.ppm", "w");
fprintf(fp, "P3 %d %d 255\n", 100, 100);
for (j = 0; j < 100; j++) {
for (k = 0; k < 100; k++) {
fscanf(lp, "%d ", &map[j][k]);
junk = map[j][k];
fprintf(lp, "%d ", map[j][k]);
if (junk < 0)
fprintf(fp, "0 0 %d ", 255+junk*5);
else
fprintf(fp, "0 %d 0 ", junk*5);
fprintf(fp, "\n");
fscanf(lp, "\n");
}
}
fclose(fp);
fclose(lp);
sprintf(fn, "skymap");
lp = fopen(fn, "r");
if (lp == NULL)
exit(0);
fp = fopen("skymap.ppm", "w");
fprintf(fp, "P3 %d %d 255\n", 100, 100);
for (j = 0; j < 100; j++) {
for (k = 0; k < 100; k++) {
fscanf(lp, "%d ", &map[j][k]);
junk = map[j][k];
fprintf(lp, "%d ", map[j][k]);
switch (junk) {
case 0: fprintf(fp, "0 0 255 "); break;
case 1: fprintf(fp, "230 230 230 "); break;
case 2: fprintf(fp, "170 170 170 "); break;
case 3: fprintf(fp, "120 120 120 "); break;
case 4: fprintf(fp, "80 80 80 "); break;
case 5: fprintf(fp, "40 40 40 "); break;
case 6: fprintf(fp, "10 10 10 "); break;
case 7: fprintf(fp, "0 255 0 "); break;
case 8: fprintf(fp, "255 0 0 "); break;
case 13: fprintf(fp, "230 230 255 "); break;
case 14: fprintf(fp, "170 170 255 "); break;
case 15: fprintf(fp, "120 120 255 "); break;
case 16: fprintf(fp, "80 80 255 "); break;
}
fprintf(fp, "\n");
fscanf(lp, "\n");
}
}
fclose(fp);
fclose(lp);
}