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