File: ui.h

package info (click to toggle)
xconq 7.2.2-2
  • links: PTS
  • area: main
  • in suites: slink
  • size: 8,296 kB
  • ctags: 9,199
  • sloc: ansic: 107,849; sh: 2,108; perl: 2,057; makefile: 1,177; sed: 161; csh: 50; awk: 49; lisp: 39
file content (200 lines) | stat: -rw-r--r-- 8,175 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
/* Definitions for graphics support not specific to any interface.
   Copyright (C) 1993-1995, 1997 Stanley T. Shebs.

Xconq is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.  See the file COPYING.  */

#define NUMPOWERS 8

typedef struct a_vp {
    int sx, sy;			/* lower left corner of the viewport, in pixels */
    int totsw, totsh;		/* total size of the map in pixels */
    int sxmin, symin;		/* lower bound on the viewport position */
    int sxmax, symax;		/* upper bound on the viewport position */
    short pxw, pxh;		/* size of window in pixels */
    short power;		/* index to this map's magnification */
    short mag;			/* magnification of each cell (a power of 2) */
    short vcx, vcy;		/* center of the view, in cells */
    short hw, hh;		/* pixel dims of a cell */
    short hch;			/* vertical center-to-center distance */
    short uw, uh;		/* pixel dims of unit subcell */
    short angle;		/* Angle of perspective view */
    short cellwidth;
    short vertscale;
    short wide_viewport;
    short draw_terrain;		/* Display solid color terrain on the map? */
    short aux_terrain_types[MAXTTYPES];
    short draw_aux_terrain[MAXTTYPES];
    short draw_grid;		/* Draw outlines around cells? */
    short draw_cell_pats;	/* Draw terrain patterns? */
    short draw_other_maps;	/* Draw outlines of other maps? */
    short draw_units;		/* Draw units on the map? */
    short draw_names;		/* Draw unit names/numbers on the map? */
    short oldest_to_show;	/* the relative time of the oldest data */
    short age_to_fade;		/* point at which to gray out the display */
    short newest_to_show;	/* the relative time of the newest data */
    short fade_terrain;		/* fade world features as well as units? */
    short lowest_altitude;	/* the lowest altitude of units to display */
    short highest_altitude;	/* the highest altitude of units to display */
    short draw_people;		/* Draw people sides on the map? */
    short draw_control;		/* Draw controlling sides on the map? */
    short draw_elevations;	/* Draw elevations on the map? */
    short draw_materials[MAXMTYPES];
    short num_materials_to_draw;
    short draw_lighting;	/* Draw day/night on the map? */
    short draw_temperature;	/* Draw temperatures on the map? */
    short draw_winds;		/* Draw wind vectors on the map? */
    short draw_clouds;		/* Draw clouds on the map? */
    short draw_storms;
    short draw_plans;
    short draw_cover;
    short draw_feature_boundaries;
    short draw_latlong;		/* Draw latitude/longitude in view */
    short latlong_interval;	/* Spacing of meridians in arc minutes */
    short draw_ai;		/* Draw AI info in view */
} VP;

typedef struct a_legend {
    int ox, oy;			/* starting point */
    int dx, dy;			/* displacement */
    float angle, dist;		/* polar displacement (redundant, but useful) */
} Legend;

typedef struct a_line_segment {
    int sx1, sy1, sx2, sy2;
} LineSegment;

#define hexagon_adjust(v) (area.xwrap ? 0 : (area.halfheight * (v)->hw) / 2)

#define REDRAW_CHAR '\001'
#define BACKSPACE_CHAR '\010'
#define ESCAPE_CHAR '\033'
#define DELETE_CHAR 0x7f

extern short mags[], hws[], hhs[], hcs[], uws[], uhs[];

extern short bwid[], bwid2[], cwid[];

extern short bsx[NUMPOWERS][7], bsy[NUMPOWERS][7];
extern short lsx[NUMPOWERS][6], lsy[NUMPOWERS][6];

extern short qx[NUMPOWERS][7], qy[NUMPOWERS][7];

extern char *dirchars;

extern ImageFamily *unseen_image;

extern char *terrchars;
extern char *unitchars;
extern char unseen_char_1, unseen_char_2;

extern Module **possible_games;

extern int numgames;

/* Function declarations. */

extern void collect_possible_games PARAMS ((void));
extern void add_to_possible_games PARAMS ((Module *module));

extern void parse_long_name_command PARAMS ((char *cmdstr, int *prefixp, char **namep,
					     char **argp, char *buf));

extern VP *new_vp PARAMS ((void));

extern void xform_cell PARAMS ((VP *vp, int x, int y, int *sxp, int *syp));
extern void xform_cell_fractional PARAMS ((VP *vp, int x, int y, int xf, int yf,
					   int *sxp, int *syp));
extern void xform_unit PARAMS ((VP *vp, Unit *unit,
				int *sxp, int *syp, int *swp, int *shp));
extern void xform_unit_self PARAMS ((VP *vp, Unit *unit,
				     int *sxp, int *syp, int *swp, int *shp));
extern void xform_occupant PARAMS ((VP *vp, Unit *transport, Unit *unit,
				    int sx, int sy, int sw, int sh,
				    int *sxp, int *syp, int *swp, int *shp));

extern void scale_vp PARAMS ((VP *vp, VP *vp2,
			      int *sxp, int *syp, int *swp, int *shp));

extern int nearest_cell PARAMS ((VP *vp, int sx, int sy,
				 int *xp, int *yp, int *xfp, int *yfp));
extern int nearest_boundary PARAMS ((VP *vp, int sx, int sy,
				     int *xp, int *yp, int *dirp));
extern int nearest_unit PARAMS ((VP *vp, int sx, int sy, Unit **unitp));

extern int cell_is_visible PARAMS ((VP *vp, int x, int y));
extern int cell_is_in_middle PARAMS ((VP *vp, int x, int y));

extern int set_view_size PARAMS ((VP *vp, int w, int h));
extern int set_view_position PARAMS ((VP *vp, int sx, int sy));
extern int set_view_power PARAMS ((VP *vp, int power));
extern int set_view_angle PARAMS ((VP *vp, int angle));
extern int set_view_direction PARAMS ((VP *vp, int dir));
extern int set_view_focus PARAMS ((VP *vp, int x, int y));
extern void center_on_focus PARAMS ((VP *vp));
extern void focus_on_center PARAMS ((VP *vp));

extern void free_vp PARAMS ((VP *vp));

extern void compute_fire_line_segment PARAMS ((int sx1, int sy1, int sx2, int sy2,
					       int i, int n,
					       int *xx, int *yy, int *dx, int *dy));
extern void place_feature_legends PARAMS ((Legend *leg, int nf, Side *side,
					   int orient, int block));
extern void plot_meridians
  PARAMS ((VP *vp,
	   void (*line_callback)(int x1, int y1, int x1f, int y1f,
				 int x2, int y2, int x2f, int y2f),
	   void (*text_callback)(int x1, int y1, int x1f, int y1f,
				 char *str)));
extern void init_contour_lines PARAMS ((void));
extern void contour_lines_at PARAMS ((VP *vp, int x, int y, int sx, int sy,
				      LineSegment **lines, int *numlinesp));
extern int draw_temperature_here PARAMS ((Side *side, int x, int y));
extern int draw_winds_here PARAMS ((Side *side, int x, int y));

extern void oneliner PARAMS ((Side *side, VP *vp, int sx, int sy));

extern Unit *find_unit_or_occ PARAMS ((VP *vp, Unit *unit,
				       int usx, int usy, int usw, int ush,
				       int sx, int sy));
extern Unit *find_unit_at PARAMS ((VP *vp, int x, int y, int sx, int sy));

extern void pick_a_focus PARAMS ((Side *side, int *xp, int *yp));

extern Unit *autonext_unit PARAMS ((Side *side, Unit *unit));
extern int in_box PARAMS ((int x, int y, int lx, int ly, int w, int h));
extern Unit *autonext_unit_inbox PARAMS ((Side *side, Unit *unit, VP *vp));
extern int could_be_next_unit PARAMS ((Unit *unit));

extern Unit *find_next_occupant PARAMS ((Unit *unit));

extern int num_active_displays PARAMS ((void));

extern int char_to_dir PARAMS ((int ch, int *dir1p, int *dir2p, int *modp));
extern int advance_into_cell PARAMS ((Side *side, Unit *unit, int x, int y,
				      Unit *other));

extern int give_supplies PARAMS ((Unit *unit, short *amts, short *rslts));
extern int take_supplies PARAMS ((Unit *unit, short *amts, short *rslts));

extern int favored_type PARAMS ((Unit *unit));

extern void force_global_replan PARAMS ((Side *side));

extern ImageFamily *get_unit_type_images
  PARAMS ((Side *side, int u, char *stylepref));
extern ImageFamily *get_terrain_type_images PARAMS ((Side *side, int t));
extern ImageFamily *get_unseen_images PARAMS ((Side *side));
extern ImageFamily *get_emblem_images PARAMS ((Side *side, Side *side2));

extern void record_imf_get PARAMS ((ImageFamily *imf));

extern void init_ui_chars PARAMS ((void));
extern void dump_text_view PARAMS ((Side *side, int use_both));

extern int terrain_seen_at PARAMS ((Side *side, int x, int y));
extern Unit *unit_seen_at PARAMS ((Side *side, int x, int y));
extern int utype_seen_at PARAMS ((Side *side, int x, int y));