cdb9325cad4d1be58da3494c85191f42e0faa993
[rocksndiamonds.git] / src / game_em / main_em.h
1 #ifndef MAIN_EM_H
2 #define MAIN_EM_H
3
4 // ============================================================================
5 // external functions and definitions imported from main program to game_em
6 // ============================================================================
7
8 #include "../engines.h"
9
10
11 // ============================================================================
12 // functions and definitions that are exported from game_em to main program
13 // ============================================================================
14
15 #include "export.h"
16
17
18 // ============================================================================
19 // internal functions and definitions that are not exported to main program
20 // ============================================================================
21
22 #include "global.h"
23
24
25 // ----------------------------------------------------------------------------
26 // constant definitions
27 // ----------------------------------------------------------------------------
28
29 /* values for native Emerald Mine game version */
30 #define FILE_VERSION_EM_UNKNOWN 0
31 #define FILE_VERSION_EM_V1      1
32 #define FILE_VERSION_EM_V2      2
33 #define FILE_VERSION_EM_V3      3
34 #define FILE_VERSION_EM_V4      4       /* (there really was no version 4) */
35 #define FILE_VERSION_EM_V5      5
36 #define FILE_VERSION_EM_V6      6
37
38 #define FILE_VERSION_EM_ACTUAL  FILE_VERSION_EM_V6
39
40 /* screen sizes and positions for EM engine */
41
42 #define TILESIZE                32
43
44 extern int                      TILESIZE_VAR;
45
46 #define TILEX                   TILESIZE_VAR
47 #define TILEY                   TILESIZE_VAR
48
49 extern int                      SCR_FIELDX, SCR_FIELDY;
50
51 #define MAX_BUF_XSIZE           (SCR_FIELDX + 2 * CAVE_BUFFER_XOFFSET)
52 #define MAX_BUF_YSIZE           (SCR_FIELDY + 2 * CAVE_BUFFER_YOFFSET)
53
54 /* often used screen positions */
55
56 extern int                      SX, SY;
57
58 #define SXSIZE                  (SCR_FIELDX * TILEX)
59 #define SYSIZE                  (SCR_FIELDY * TILEY)
60
61 /* other settings */
62 #define PLAY_ELEMENT_SOUND      FALSE
63
64
65 // ----------------------------------------------------------------------------
66 // macro function definitions
67 // ----------------------------------------------------------------------------
68
69 #define ROUNDED_DIVIDE(x, y)    (((x) + (y) - 1) / (y))
70
71 #define SECONDS_TO_FRAMES(x)    ((x) * FRAMES_PER_SECOND)
72 #define FRAMES_TO_SECONDS(x)    ((x) / FRAMES_PER_SECOND)
73
74 #define SECONDS_TO_CYCLES(x)    ROUNDED_DIVIDE((x) * FRAMES_PER_SECOND, 8)
75 #define CYCLES_TO_SECONDS(x)    ROUNDED_DIVIDE((x) * 8, FRAMES_PER_SECOND)
76
77 #define DISPLAY_TIME(x)         ROUNDED_DIVIDE(x, FRAMES_PER_SECOND)
78
79
80 // ----------------------------------------------------------------------------
81 // data structure definitions
82 // ----------------------------------------------------------------------------
83
84 // ----------------------------------------------------------------------------
85 // exported variables
86 // ----------------------------------------------------------------------------
87
88 extern struct CAVE cav;
89 extern struct LOGIC lev;
90 extern struct PLAYER ply[MAX_PLAYERS];
91
92 extern struct LevelInfo_EM native_em_level;
93 extern struct GraphicInfo_EM graphic_info_em_object[GAME_TILE_MAX][8];
94 extern struct GraphicInfo_EM graphic_info_em_player[MAX_PLAYERS][PLY_MAX][8];
95 extern struct GameInfo_EM game_em;
96
97 extern Bitmap *screenBitmap;
98
99
100 // ----------------------------------------------------------------------------
101 // exported functions
102 // ----------------------------------------------------------------------------
103
104 #endif  // MAIN_EM_H