rnd-20001203-4-src
[rocksndiamonds.git] / src / libgame / system.h
1 /***********************************************************
2 *  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
3 *----------------------------------------------------------*
4 *  ©1995 Artsoft Development                               *
5 *        Holger Schemel                                    *
6 *        33659 Bielefeld-Senne                             *
7 *        Telefon: (0521) 493245                            *
8 *        eMail: aeglos@valinor.owl.de                      *
9 *               aeglos@uni-paderborn.de                    *
10 *               q99492@pbhrzx.uni-paderborn.de             *
11 *----------------------------------------------------------*
12 *  system.h                                                *
13 ***********************************************************/
14
15 #ifndef SYSTEM_H
16 #define SYSTEM_H
17
18 /*
19 #include "libgame.h"
20 */
21
22 #if defined(PLATFORM_MSDOS)
23 #include "msdos.h"
24 #endif
25
26 #if defined(TARGET_SDL)
27 #include "sdl.h"
28 #elif defined(TARGET_X11)
29 #include "x11.h"
30 #endif
31
32
33 /* contant definitions */
34
35 #define DEFAULT_DEPTH                   0
36
37 #define FULLSCREEN_NOT_AVAILABLE        FALSE
38 #define FULLSCREEN_AVAILABLE            TRUE
39
40 /* values for button_status */
41 #define MB_NOT_PRESSED          FALSE
42 #define MB_RELEASED             FALSE
43 #define MB_PRESSED              TRUE
44 #define MB_MENU_CHOICE          FALSE
45 #define MB_MENU_MARK            TRUE
46 #define MB_MENU_INITIALIZE      (-1)
47 #define MB_LEFTBUTTON           1
48 #define MB_MIDDLEBUTTON         2
49 #define MB_RIGHTBUTTON          3
50
51 /* values for redraw_mask */
52 #define REDRAW_NONE             (0)
53 #define REDRAW_ALL              (1 << 0)
54 #define REDRAW_FIELD            (1 << 1)
55 #define REDRAW_TILES            (1 << 2)
56 #define REDRAW_DOOR_1           (1 << 3)
57 #define REDRAW_VIDEO_1          (1 << 4)
58 #define REDRAW_VIDEO_2          (1 << 5)
59 #define REDRAW_VIDEO_3          (1 << 6)
60 #define REDRAW_MICROLEVEL       (1 << 7)
61 #define REDRAW_FROM_BACKBUFFER  (1 << 8)
62 #define REDRAW_DOOR_2           (REDRAW_VIDEO_1 | \
63                                  REDRAW_VIDEO_2 | \
64                                  REDRAW_VIDEO_3)
65 #define REDRAW_DOOR_3           (1 << 9)
66 #define REDRAW_DOORS            (REDRAW_DOOR_1 | \
67                                  REDRAW_DOOR_2 | \
68                                  REDRAW_DOOR_3)
69 #define REDRAW_MAIN             (REDRAW_FIELD | \
70                                  REDRAW_TILES | \
71                                  REDRAW_MICROLEVEL)
72 #define REDRAW_FPS              (1 << 10)
73 #define REDRAWTILES_THRESHOLD   (SCR_FIELDX * SCR_FIELDY / 2)
74
75
76 /* type definitions */
77
78 typedef int (*EventFilter)(const Event *);
79
80
81 /* structure definitions */
82
83 struct ProgramInfo
84 {
85   char *command_basename;
86   char *userdata_directory;
87
88   char *program_title;
89   char *window_title;
90   char *icon_title;
91   char *x11_icon_filename;
92   char *x11_iconmask_filename;
93   char *msdos_pointer_filename;
94
95   void (*exit_function)(int);
96 };
97
98 struct OptionInfo
99 {
100   char *display_name;
101   char *server_host;
102   int server_port;
103   char *ro_base_directory;
104   char *rw_base_directory;
105   char *level_directory;
106   boolean serveronly;
107   boolean network;
108   boolean verbose;
109   boolean debug;
110 };
111
112 struct VideoSystemInfo
113 {
114   int default_depth;
115   int width, height, depth;
116   boolean fullscreen_available;
117   boolean fullscreen_enabled;
118 };
119
120 struct AudioSystemInfo
121 {
122   boolean sound_available;
123   boolean loops_available;
124   int soundserver_pipe[2];
125   int soundserver_pid;
126   char *device_name;
127   int device_fd;
128 };
129
130 struct GfxInfo
131 {
132   int sx, sy;
133   int sxsize, sysize;
134   int real_sx, real_sy;
135   int full_sxsize, full_sysize;
136   int scrollbuffer_width, scrollbuffer_height;
137
138   int dx, dy;
139   int dxsize, dysize;
140
141   int vx, vy;
142   int vxsize, vysize;
143 };
144
145
146 #if 0
147 /* ========================================================================= */
148 /* exported variables                                                        */
149 /* ========================================================================= */
150
151 extern struct ProgramInfo       program;
152 extern struct OptionInfo        options;
153 extern struct VideoSystemInfo   video;
154 extern struct AudioSystemInfo   audio;
155 extern struct GfxInfo           gfx;
156
157 extern Display         *display;
158 extern Visual          *visual;
159 extern int              screen;
160 extern Colormap         cmap;
161
162 extern DrawWindow       window;
163 extern DrawBuffer       backbuffer;
164 extern DrawBuffer       drawto;
165
166 extern int              button_status;
167 extern boolean          motion_status;
168
169 extern int              redraw_mask;
170 extern int              redraw_tiles;
171
172 extern int              FrameCounter;
173
174 #endif
175
176 /* function definitions */
177
178 void InitCommandName(char *);
179 void InitExitFunction(void (*exit_function)(int));
180 void InitPlatformDependantStuff(void);
181
182 void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *);
183
184 void InitGfxFieldInfo(int, int, int, int, int, int, int, int);
185 void InitGfxDoor1Info(int, int, int, int);
186 void InitGfxDoor2Info(int, int, int, int);
187 void InitGfxScrollbufferInfo(int, int);
188
189 inline void InitVideoDisplay(void);
190 inline void InitVideoBuffer(DrawBuffer *,DrawWindow *, int, int, int, boolean);
191 inline Bitmap CreateBitmapStruct(void);
192 inline Bitmap CreateBitmap(int, int, int);
193 inline void FreeBitmap(Bitmap);
194 inline void BlitBitmap(Bitmap, Bitmap, int, int, int, int, int, int);
195 inline void ClearRectangle(Bitmap, int, int, int, int);
196 inline void SetClipMask(Bitmap, GC, Pixmap);
197 inline void SetClipOrigin(Bitmap, GC, int, int);
198 inline void BlitBitmapMasked(Bitmap, Bitmap, int, int, int, int, int, int);
199 inline void DrawSimpleWhiteLine(Bitmap, int, int, int, int);
200 inline void FlushDisplay(void);
201 inline void SyncDisplay(void);
202 inline void KeyboardAutoRepeatOn(void);
203 inline void KeyboardAutoRepeatOff(void);
204 inline boolean PointerInWindow(DrawWindow);
205 inline boolean SetVideoMode(boolean);
206 inline boolean ChangeVideoModeIfNeeded(boolean);
207
208 inline boolean OpenAudio(struct AudioSystemInfo *);
209 inline void CloseAudio(struct AudioSystemInfo *);
210
211 inline void InitEventFilter(EventFilter);
212 inline boolean PendingEvent(void);
213 inline void NextEvent(Event *event);
214 inline Key GetEventKey(KeyEvent *, boolean);
215 inline boolean CheckCloseWindowEvent(ClientMessageEvent *);
216
217 #endif /* SYSTEM_H */