Color & save-interval implementation.
[vms-empire.git] / main.c
1 /* $Id$  - (c) Copyright 1987, 1988 Chuck Simmons */
2
3 /*
4  *    Copyright (C) 1987, 1988 Chuck Simmons
5  * 
6  * See the file COPYING, distributed with empire, for restriction
7  * and warranty information.
8  */
9
10 /*
11 main.c -- parse command line for empire
12
13 options:
14
15     -w water: percentage of map that is water.  Must be in the range
16               10..90.  Default is 70.
17               
18     -s smooth: amount of smoothing performed to generate map.  Must
19                be a nonnegative integer.  Default is 5.
20                
21     -d delay:  number of milliseconds to delay between output.
22                default is 2000 (2 seconds).
23
24     -S saveinterval: sets turn interval between saves.
25                default is 10
26 */
27
28 #include <stdio.h>
29 #include "empire.h"
30 #include "extern.h"
31
32 #define OPTFLAGS "w:s:d:S:"
33
34 main (argc, argv)
35 int argc;
36 char *argv[];
37 {
38         int c;
39         extern char *optarg;
40         extern int optind;
41         extern int opterr;      /* set to 1 to suppress error msg */
42         int errflg = 0;
43         int wflg, sflg, dflg, Sflg;
44         int land;
45         
46         wflg = 70; /* set defaults */
47         sflg = 5;
48         dflg = 2000;
49         Sflg = 10;
50
51         /*
52          * extract command line options
53          */
54
55         while ((c = getopt (argc, argv, OPTFLAGS)) != EOF) {
56                 switch (c) {
57                 case 'w':
58                         wflg = atoi (optarg);
59                         break;
60                 case 's':
61                         sflg = atoi (optarg);
62                         break;
63                 case 'd':
64                         dflg = atoi (optarg);
65                         break;
66                 case 'S':
67                         Sflg = atoi (optarg);
68                         break;
69                 case '?': /* illegal option? */
70                         errflg++;
71                         break;
72                 }
73         }
74         if (errflg || (argc-optind) != 0) {
75                 (void) printf ("empire: usage: empire [-w water] [-s smooth] [-d delay]\n");
76                 exit (1);
77         }
78
79         if (wflg < 10 || wflg > 90) {
80                 (void) printf ("empire: -w argument must be in the range 0..90.\n");
81                 exit (1);
82         }
83         if (sflg < 0) {
84                 (void) printf ("empire: -s argument must be greater or equal to zero.\n");
85                 exit (1);
86         }
87         
88         if (dflg < 0 || dflg > 30000) {
89                 (void) printf ("empire: -d argument must be in the range 0..30000.\n");
90                 exit (1);
91         }
92
93         SMOOTH = sflg;
94         WATER_RATIO = wflg;
95         delay_time = dflg;
96         save_interval = Sflg;
97
98         /* compute min distance between cities */
99         land = MAP_SIZE * (100 - WATER_RATIO) / 100; /* available land */
100         land /= NUM_CITY; /* land per city */
101         MIN_CITY_DIST = sqrt (land); /* distance between cities */
102
103         empire (); /* call main routine */
104         return (0);
105 }