dhcpcd: Remove left over patches.
[dragonfly.git] / games / mille / mille.h
1 /*-
2  * Copyright (c) 1982, 1993
3  *      The Regents of the University of California.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the University nor the names of its contributors
14  *    may be used to endorse or promote products derived from this software
15  *    without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  *
29  *      @(#)mille.h     8.1 (Berkeley) 5/31/93
30  *
31  * $FreeBSD: src/games/mille/mille.h,v 1.7 1999/12/12 06:17:24 billf Exp $
32  */
33
34 #include <sys/types.h>
35 #include <sys/uio.h>
36 #include <ctype.h>
37 #include <curses.h>
38 #include <stdlib.h>
39 #include <string.h>
40 #include <unistd.h>
41
42 /*
43  * @(#)mille.h  1.1 (Berkeley) 4/1/82
44  */
45
46 /*
47  * Miscellaneous constants
48  */
49
50 #define CARD            short
51
52 #define HAND_SZ         7       /* number of cards in a hand    */
53 #define DECK_SZ         101     /* number of cards in decks     */
54 #define NUM_SAFE        4       /* number of safety cards       */
55 #define NUM_MILES       5       /* number of milestones types   */
56 #define NUM_CARDS       20      /* number of types of cards     */
57 #define BOARD_Y         17      /* size of board screen         */
58 #define BOARD_X         40
59 #define MILES_Y         7       /* size of mileage screen       */
60 #define MILES_X         80
61 #define SCORE_Y         17      /* size of score screen         */
62 #define SCORE_X         40
63 #define MOVE_Y          10      /* Where to print move prompt   */
64 #define MOVE_X          20
65 #define ERR_Y           15      /* Where to print errors        */
66 #define ERR_X           5
67 #define EXT_Y           4       /* Where to put Extension       */
68 #define EXT_X           9
69
70 #define PLAYER          0
71 #define COMP            1
72
73 #define W_SMALL         0       /* Small (initial) window       */
74 #define W_FULL          1       /* Full (final) window          */
75
76 /*
77  * Move types
78  */
79
80 #define M_DISCARD       0
81 #define M_DRAW          1
82 #define M_PLAY          2
83 #define M_ORDER         3
84
85 /*
86  * Scores
87  */
88
89 #define SC_SAFETY       100
90 #define SC_ALL_SAFE     300
91 #define SC_COUP         300
92 #define SC_TRIP         400
93 #define SC_SAFE         300
94 #define SC_DELAY        300
95 #define SC_EXTENSION    200
96 #define SC_SHUT_OUT     500
97
98 /*
99  * safety descriptions
100  */
101
102 #define S_UNKNOWN       0       /* location of safety unknown   */
103 #define S_IN_HAND       1       /* safety in player's hand      */
104 #define S_PLAYED        2       /* safety has been played       */
105 #define S_GAS_SAFE      0       /* Gas safety card index        */
106 #define S_SPARE_SAFE    1       /* Tire safety card index       */
107 #define S_DRIVE_SAFE    2       /* Driveing safety card index   */
108 #define S_RIGHT_WAY     3       /* Right-of-Way card index      */
109 #define S_CONV          15      /* conversion from C_ to S_     */
110
111 /*
112  * card numbers
113  */
114
115 #define C_INIT          -1
116 #define C_25            0
117 #define C_50            1
118 #define C_75            2
119 #define C_100           3
120 #define C_200           4
121 #define C_EMPTY         5
122 #define C_FLAT          6
123 #define C_CRASH         7
124 #define C_STOP          8
125 #define C_LIMIT         9
126 #define C_GAS           10
127 #define C_SPARE         11
128 #define C_REPAIRS       12
129 #define C_GO            13
130 #define C_END_LIMIT     14
131 #define C_GAS_SAFE      15
132 #define C_SPARE_SAFE    16
133 #define C_DRIVE_SAFE    17
134 #define C_RIGHT_WAY     18
135
136 /*
137  * prompt types
138  */
139
140 #define MOVEPROMPT              0
141 #define REALLYPROMPT            1
142 #define ANOTHERHANDPROMPT       2
143 #define ANOTHERGAMEPROMPT       3
144 #define SAVEGAMEPROMPT          4
145 #define SAMEFILEPROMPT          5
146 #define FILEPROMPT              6
147 #define EXTENSIONPROMPT         7
148 #define OVERWRITEFILEPROMPT     8
149
150 #define erasechar()     cur_term->Nttyb.c_cc[VERASE]
151 #define killchar()      cur_term->Nttyb.c_cc[VKILL]
152
153 typedef struct {
154         bool    coups[NUM_SAFE];
155         bool    can_go;
156         bool    new_battle;
157         bool    new_speed;
158         short   safety[NUM_SAFE];
159         short   sh_safety[NUM_SAFE];
160         short   nummiles[NUM_MILES];
161         short   sh_nummiles[NUM_MILES];
162         CARD    hand[HAND_SZ];
163         CARD    sh_hand[HAND_SZ];
164         CARD    battle;
165         CARD    sh_battle;
166         CARD    speed;
167         CARD    sh_speed;
168         int     mileage;
169         int     sh_mileage;
170         int     hand_tot;
171         int     sh_hand_tot;
172         int     safescore;
173         int     sh_safescore;
174         int     coupscore;
175         int     total;
176         int     sh_total;
177         int     games;
178         int     sh_games;
179         int     was_finished;
180 } PLAY;
181
182 /*
183  * macros
184  */
185
186 #define other(x)        (1 - x)
187 #define nextplay()      (Play = other(Play))
188 #define nextwin(x)      (1 - x)
189 #define opposite(x)     (Opposite[x])
190 #define issafety(x)     (x >= C_GAS_SAFE)
191
192 /*
193  * externals
194  */
195
196 extern bool     Debug, Finished, Next, On_exit, Order, Saved;
197
198 extern char     Initstr[];
199 extern const char       *C_fmt, *const *C_name, *Fromfile;
200
201 extern int      Card_no, End, Handstart, Movetype, Numgos,
202                 Numneed[], Numseen[NUM_CARDS], Play, Window;
203 extern const int        Numcards[], Value[];
204
205 extern CARD     Deck[DECK_SZ], Discard, Sh_discard, *Topcard;
206 extern const CARD       Opposite[NUM_CARDS];
207
208 extern FILE     *outf;
209
210 extern PLAY     Player[2];
211
212 extern WINDOW   *Board, *Miles, *Score;
213
214 /*
215  * functions
216  */
217
218 void    account(CARD);
219 void    calcmove(void);
220 bool    canplay(const PLAY *, const PLAY *, CARD);
221 bool    check_ext(bool);
222 void    check_more(void);
223 void    die(int) __dead2;
224 void    domove(void);
225 bool    error(const char *, ...);
226 #ifdef EXTRAP
227 void    extrapolate(PLAY *);
228 #endif
229 void    finalscore(PLAY *);
230 CARD    getcard(void);
231 bool    getyn(int);
232 void    init(void);
233 int     isrepair(CARD);
234 void    newboard(void);
235 void    newscore(void);
236 bool    onecard(const PLAY *);
237 void    prboard(void);
238 void    prompt(int);
239 void    prscore(bool);
240 char    readch(void);
241 bool    rest_f(const char *);
242 int     roll(int, int);
243 void    rub(int);
244 CARD    safety(CARD);
245 bool    save(void);
246 void    shuffle(void);
247 void    sort(CARD *);
248 bool    varpush(int, ssize_t (*)(int, const struct iovec *, int));
249 #ifdef EXTRAP
250 void    undoex(void);
251 #endif