1 /* moon-buggy.h - global moon-buggy header file
2  *
3  * Copyright 1999, 2000  Jochen Voss
4  *
5  * $Id: moon-buggy.h 4839 2003-04-13 16:50:02Z voss $ */
6 
7 #ifndef FILE_MOON_BUGGY_H_SEEN
8 #define FILE_MOON_BUGGY_H_SEEN
9 
10 /* The game's overall speed.  High values indicate fast scrolling.
11  * You may try to decrease this, if the animation flickers too much. */
12 #define  MB_SPEED  1.0
13 
14 #include <stdlib.h>		/* we use `size_t' */
15 #include <time.h>		/* we use `time_t' */
16 
17 #ifndef CURSES_HEADER
18 #define CURSES_HEADER <curses.h>
19 #endif
20 #include CURSES_HEADER
21 
22 #define TICK(x) ((x)*0.08/(MB_SPEED))
23 #define BASELINE (LINES-5)
24 
25 
26 /* from "main.c" */
27 extern  const char *my_name;
28 extern  WINDOW *moon, *status, *message;
29 
30 extern int  car_base;
31 
32 extern  void  print_message (const char *str);
33 extern  void  print_hint (const char *str);
34 extern  void  prepare_screen (void);
35 extern  void  prepare_for_exit (void);
36 extern  void  allocate_windows (void);
37 extern  void  clear_windows (void);
38 
39 /* from "queue.c" */
40 typedef  double  game_time;
41 typedef  void (*callback_fn) (game_time, void *);
42 
43 extern  game_time  current_time (void);
44 
45 extern  void  clock_reset (void);
46 extern  void  clock_thaw (void);
47 extern  void  clear_queue (void);
48 extern  void  add_event (game_time t, callback_fn callback, void *client_data);
49 extern  void  remove_event (callback_fn callback);
50 extern  void  remove_client_data (void *client_data);
51 extern  void  clock_freeze (void);
52 extern  void  quit_main_loop (void);
53 extern  void  main_loop (void);
54 
55 extern  void  print_hint_h (game_time t, void *client_data);
56 extern  void  clear_hint_h (game_time, void *);
57 
58 /* from "title.c" */
59 extern  struct mode *title_mode;
60 extern  void  setup_title_mode (void);
61 
62 /* from "pager.c" */
63 extern  struct mode *pager_mode;
64 extern  void  setup_pager_mode (void);
65 
66 /* from "game.c" */
67 extern  struct mode *game_mode;
68 extern  struct mode *crash_mode;
69 extern  int  crash_detected;
70 extern  int  stakes;
71 
72 extern  void  adjust_score (int val);
73 extern  void  print_lives (void);
74 extern  void  print_game_over (int blink);
75 extern  void  setup_game_mode (void);
76 
77 /* from "level.c" */
78 extern  void  level_start (int initial);
79 extern  void  level_tick (double t);
80 extern  int  current_level (void);
81 
82 /* from "ground.c" */
83 extern  int *bonus;
84 extern  char *ground1, *ground2;
85 extern  void  resize_ground (int clear_it);
86 extern  void  print_ground (void);
87 extern  void  start_scrolling (double t);
88 
89 /* from "buggy.c" */
90 extern  int  car_x, car_y;
91 extern  void  initialise_buggy (void);
92 extern  void  print_buggy (void);
93 extern  void  shift_buggy (int dx);
94 extern  void  jump (game_time t);
95 extern  int  can_jump (void);
96 extern  int  crash_check (void);
97 extern  int  car_meteor_hit (int x);
98 
99 /* from "laser.c" */
100 extern  void  fire_laser (double t);
101 extern  void  extinguish_laser (void);
102 extern  int  laser_hit (int x);
103 extern  void  resize_laser (void);
104 
105 /* from "meteor.c" */
106 extern  void  scroll_meteors (void);
107 extern  void  place_meteor (void);
108 extern  void  remove_meteors (void);
109 extern  int  meteor_laser_hit (int x0, int x1);
110 extern  int  meteor_car_hit (int x0, int x1);
111 extern  void  resize_meteors (void);
112 
113 /* from "highscore.c" */
114 extern  struct mode *highscore_mode;
115 extern  void  create_highscores (void);
116 extern  void  show_highscores (void);
117 
118 extern  void  score_set (int score, int level);
119 extern  void  setup_highscore_mode (void);
120 
121 /* from "realname.c" */
122 extern  int  get_real_user_name (char *buffer, size_t size);
123 
124 /* from "vclock.c" */
125 extern  double  vclock (void);
126 
127 /* from "date.c" */
128 #define MAX_DATE_CHARS 32
129 extern  time_t  parse_date (const char *str);
130 extern  time_t  convert_old_date (int day, int month, int year);
131 extern  void  format_date (char *buffer, time_t date);
132 extern  void  format_display_date (char *buffer, time_t date);
133 extern  void  format_relative_time (char *buffer, double dt);
134 
135 /* from "persona.c" */
136 enum persona { pers_GAME, pers_USER };
137 extern  void  initialise_persona (void);
138 extern  int  is_setgid (void);
139 extern  void  set_persona (enum persona  pers);
140 
141 /* from "signal.c" */
142 extern  void  block_all (void);
143 extern  void  unblock (void);
144 extern  void  initialise_signals (void);
145 extern  int  handle_signals (void);
146 
147 /* from "keyboard.c" */
148 enum mb_key {
149   mbk_copyright = 1, mbk_down = 2, mbk_end = 4, mbk_fire = 8, mbk_first = 16,
150   mbk_jump = 32, mbk_last = 64, mbk_pagedown = 128, mbk_pageup = 256,
151   mbk_start = 512, mbk_up = 1024, mbk_warranty = 2048, mbk_scores = 4096,
152 
153   mbk_redraw = 8192		/* specially handled in `mode_keypress' */
154 };
155 struct binding {
156   int  meanings;
157   const char *desc;
158   int  res;
159 };
160 extern  void  install_keys (void);
161 extern  int  read_key (void);
162 extern  void  describe_keys (int n, const struct binding *b);
163 
164 /* from "mode.c" */
165 struct mode {
166   void (*enter) (int seed);
167   void (*leave) (void);
168   void (*redraw) (void);
169   void (*signal) (int signum);
170 
171   struct {
172     struct binding *data;
173     int used, slots;
174   } keys;
175   void (*keypress) (game_time, int);
176 };
177 
178 extern  struct mode *new_mode (void);
179 extern  void  mode_add_key (struct mode *m,
180 			    int meanings, const char *desc, int res);
181 extern  void  mode_complete (struct mode *m);
182 extern  void  mode_change (const struct mode *m, int seed);
183 extern  void  mode_update (void);
184 extern  void  mode_redraw (void);
185 extern  int  mode_keypress (game_time t, int meaning);
186 extern  void  mode_signal (int signum);
187 
188 /* from "terminal.c" */
189 extern  void  term_prepare (int mesg_n_flag);
190 extern  void  term_restore (void);
191 
192 /* from "cursor.c" */
193 extern  void  hide_cursor (void);
194 extern  void  show_cursor (void);
195 
196 /* from "random.c" */
197 extern  void  init_rnd (void);
198 extern  int  uniform_rnd (unsigned limit);
199 
200 /* from "error.c" */
201 #ifdef __GNUC__
202 extern  void  fatal (const char *format, ...)
203 	__attribute__ ((noreturn)) __attribute__ ((format (printf, 1, 2)));
204 #else
205 extern  void  fatal (const char *format, ...);
206 #endif
207 
208 /* from "xmalloc.c" */
209 extern  void *xmalloc (size_t size);
210 extern  void *xrealloc (void *ptr, size_t size);
211 
212 /* from "xstrdup.c" */
213 extern  size_t  xstrnlen (const char *str, size_t size);
214 extern  char *xstrdup (const char *str);
215 extern  char *xstrndup (const char *str, size_t size);
216 
217 /* from "hpath.c" */
218 extern  const char *score_dir;
219 
220 #endif /* FILE_MOON_BUGGY_H_SEEN */
221