File: ui.h

package info (click to toggle)
xconq 7.1.0-7
  • links: PTS
  • area: main
  • in suites: hamm
  • size: 7,056 kB
  • ctags: 7,960
  • sloc: ansic: 88,493; perl: 2,057; sh: 1,766; makefile: 1,110; csh: 81; awk: 47; lisp: 39
file content (148 lines) | stat: -rw-r--r-- 6,105 bytes parent folder | download
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
/* Definitions for graphics support not specific to any interface.
   Copyright (C) 1993, 1994, 1995 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 {
    short sx, sy;		/* lower left corner of the viewport, in pixels */
    int   totsw, totsh;		/* total size of the map in pixels */
    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 */
    short hw, hh;		/* pixel dims of a cell */
    short hch;			/* height of cell cell between centers */
    short uw, uh;		/* pixel dims of unit subcell */
    short angle;		/* Angle of perspective view. */
    short cellwidth;
    short vertscale;
} VP;

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

#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, 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_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));
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 unit_is_visible PARAMS ((VP *vp, Unit *unit));
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 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 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 disband_unit PARAMS ((Side *side, Unit *unit));
extern int favored_type PARAMS ((Unit *unit));

extern ImageFamily *get_unit_type_images PARAMS ((Side *side, int u,
						 void (*interp_hook)(ImageFamily *imf),
						 void (*load_hook)(ImageFamily *imf),
						 void (*default_hook)(ImageFamily *imf, int u, char *name)));
extern ImageFamily *get_terrain_type_images PARAMS ((Side *side, int t,
						    void (*interp_hook)(ImageFamily *imf),
						    void (*load_hook)(ImageFamily *imf),
						    void (*default_hook)(ImageFamily *imf, int u, char *name)));
extern ImageFamily *get_unseen_images PARAMS ((Side *side,
						    void (*interp_hook)(ImageFamily *imf),
						    void (*load_hook)(ImageFamily *imf),
						    void (*default_hook)(ImageFamily *imf, char *name)));
extern ImageFamily *get_emblem_images PARAMS ((Side *side, Side *side2,
					      void (*interp_hook)(ImageFamily *imf),
					      void (*load_hook)(ImageFamily *imf),
						  void (*default_hook)(ImageFamily *imf, int u, char *name)));

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));