Micro-optimizations for the expand_perimeter routine.
[vms-empire.git] / extern.h
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 extern.h -- define global non-constant storage.
12 */
13
14 /* user-supplied parameters */
15 int SMOOTH;        /* number of times to smooth map */
16 int WATER_RATIO;   /* percentage of map that is water */
17 int MIN_CITY_DIST; /* cities must be at least this far apart */
18 int delay_time;
19 int save_interval; /* turns between autosaves */
20
21 real_map_t map[MAP_SIZE]; /* the way the world really looks */
22 view_map_t comp_map[MAP_SIZE]; /* computer's view of the world */
23 view_map_t user_map[MAP_SIZE]; /* user's view of the world */
24
25 city_info_t city[NUM_CITY]; /* city information */
26
27 /*
28 There is one array to hold all allocated objects no matter who
29 owns them.  Objects are allocated from the array and placed on
30 a list corresponding to the type of object and its owner.
31 */
32
33 piece_info_t *free_list; /* index to free items in object list */
34 piece_info_t *user_obj[NUM_OBJECTS]; /* indices to user lists */
35 piece_info_t *comp_obj[NUM_OBJECTS]; /* indices to computer lists */
36 piece_info_t object[LIST_SIZE]; /* object list */
37
38 /* Display information. */
39 int lines; /* lines on screen */
40 int cols; /* columns on screen */
41
42 /* constant data */
43 extern piece_attr_t piece_attr[];
44 extern int dir_offset[];
45 extern char *func_name[];
46 extern int move_order[];
47 extern char type_chars[];
48 extern char tt_attack[];
49 extern char army_attack[];
50 extern char fighter_attack[];
51 extern char ship_attack[];
52
53 extern move_info_t tt_load;
54 extern move_info_t tt_explore;
55 extern move_info_t tt_unload;
56 extern move_info_t army_fight;
57 extern move_info_t army_load;
58 extern move_info_t fighter_fight;
59 extern move_info_t ship_fight;
60 extern move_info_t ship_repair;
61 extern move_info_t user_army;
62 extern move_info_t user_army_attack;
63 extern move_info_t user_fighter;
64 extern move_info_t user_ship;
65 extern move_info_t user_ship_repair;
66
67 extern char *help_cmd[];
68 extern char *help_edit[];
69 extern char *help_user[];
70 extern int cmd_lines;
71 extern int edit_lines;
72 extern int user_lines;
73
74 /* miscellaneous */
75 long date; /* number of game turns played */
76 char automove; /* TRUE iff user is in automove mode */
77 char resigned; /* TRUE iff computer resigned */
78 char debug; /* TRUE iff in debugging mode */
79 char print_debug; /* TRUE iff we print debugging stuff */
80 char print_vmap; /* TRUE iff we print view maps */
81 char trace_pmap; /* TRUE if we are tracing pmaps */
82 int win; /* set when game is over */
83 char jnkbuf[STRSIZE]; /* general purpose temporary buffer */
84 char save_movie; /* TRUE iff we should save movie screens */
85 int user_score; /* "score" for user and computer */
86 int comp_score;
87
88 /* Screen updating macros */
89 #define display_loc_u(loc) display_loc(USER,user_map,loc)
90 #define display_loc_c(loc) display_loc(COMP,comp_map,loc)
91 #define print_sector_u(sector) print_sector(USER,user_map,sector)
92 #define print_sector_c(sector) print_sector(COMP,comp_map,sector)
93 #define loc_row(loc) ((loc)/MAP_WIDTH)
94 #define loc_col(loc) ((loc)%MAP_WIDTH)
95 #define row_col_loc(row,col) ((long)((row)*MAP_WIDTH + (col)))
96 #define sector_row(sector) ((sector)%SECTOR_ROWS)
97 #define sector_col(sector) ((sector)/SECTOR_ROWS)
98 #define row_col_sector(row,col) ((int)((col)*SECTOR_ROWS+(row)))
99
100 #define loc_sector(loc) \
101         row_col_sector(loc_row(loc)/ROWS_PER_SECTOR, \
102                        loc_col(loc)/COLS_PER_SECTOR)
103                        
104 #define sector_loc(sector) row_col_loc( \
105                 sector_row(sector)*ROWS_PER_SECTOR+ROWS_PER_SECTOR/2, \
106                 sector_col(sector)*COLS_PER_SECTOR+COLS_PER_SECTOR/2)
107                 
108 /* global routines */
109
110 void empire();
111
112 void attack();
113 void comp_move();
114 void user_move();
115 void edit();
116
117 /* map routines */
118 void vmap_cont();
119 void rmap_cont();
120 void vmap_mark_up_cont();
121 scan_counts_t vmap_cont_scan();
122 scan_counts_t rmap_cont_scan();
123 int map_cont_edge();
124 long vmap_find_aobj();
125 long vmap_find_wobj();
126 long vmap_find_lobj();
127 long vmap_find_lwobj();
128 long vmap_find_wlobj();
129 long vmap_find_dest();
130 void vmap_prune_explore_locs();
131 void vmap_mark_path();
132 void vmap_mark_adjacent();
133 void vmap_mark_near_path();
134 long vmap_find_dir();
135 int vmap_count_adjacent();
136 int vmap_shore();
137 int rmap_shore();
138 int vmap_at_sea();
139 int rmap_at_sea();
140
141 void kill_display(); /* display routines */
142 void sector_change();
143 int cur_sector();
144 long cur_cursor();
145 void display_loc();
146 void display_locx();
147 void print_sector();
148 int move_cursor();
149 void print_zoom();
150 void print_pzoom();
151 void print_xzoom();
152 void display_score();
153 #ifdef A_COLOR
154 void init_colors();
155 #endif /* A_COLOR */
156
157 void init_game(); /* game routines */
158 void save_game();
159 int restore_game();
160 void save_movie_screen();
161 void replay_movie();
162
163 void get_str(); /* input routines */
164 void get_strq();
165 char get_chx();
166 int getint();
167 char get_c();
168 char get_cq();
169 int getyn();
170 int get_range();
171
172 void rndini(); /* math routines */
173 long irand();
174 int dist();
175 int sqrt();
176
177 int find_nearest_city();
178 city_info_t *find_city(); /* object routines */
179 piece_info_t *find_obj();
180 piece_info_t *find_nfull();
181 long find_transport();
182 piece_info_t *find_obj_at_loc();
183 int obj_moves();
184 int obj_capacity();
185 void kill_obj();
186 void kill_city();
187 void produce();
188 void move_obj();
189 void move_sat();
190 int good_loc();
191 void embark();
192 void disembark();
193 void describe_obj();
194 void scan();
195 void scan_sat();
196 void set_prod();
197
198 /* terminal routines */
199 void pdebug();
200 void topini();
201 void clreol();
202 void topmsg();
203 void prompt();
204 void error();
205 void info();
206 void comment();
207 void extra();
208 void huh();
209 void help();
210 void set_need_delay();
211
212 /* utility routines */
213 void ttinit();
214 void redraw();
215 void clear_screen();
216 void delay();
217 void close_disp();
218 void pos_str();
219 void addprintf();
220 void assert();
221 void empend();
222 void ver();
223 char upper();
224 void tupper();
225 void check();
226
227 /* randon routines we use */
228 long time();
229 void exit();
230 void perror();
231 void srand();
232 char *strcpy();