1 #ifndef __BRIKXH__
2 #define __BRIKXH__
3 
4 //#define WIZRES
5 
6 #include "SDL/SDL.h"
7 #include "SDL/SDL_mixer.h"
8 
9 #define VERSION         "0.4.2"
10 
11 #ifdef	WIZ
12 #define WIZRES
13 #endif
14 
15 #ifdef	WIZRES
16 #define WIDTH           320
17 #define HEIGHT          240
18 #else
19 #define WIDTH           640
20 #define HEIGHT          480
21 #endif
22 
23 #ifdef	WIZ
24 #define BPP             16
25 #else
26 #define BPP             32
27 #endif
28 
29 #define NAME_MAXLEN     16
30 #define MAX_HIGHENTRIES 20
31 #define BACKGROUND_MAX  50
32 #define MAX_TILES       99
33 
34 #ifdef	WIZRES
35 #define TILE_WIDTH      30
36 #define TILE_HEIGHT     30
37 #else
38 #define TILE_WIDTH      60
39 #define TILE_HEIGHT     60
40 #endif
41 
42 #define WINDOWX         0
43 #define WINDOWY         0
44 #define TILESET_DEFAULT "stone"
45 
46 #ifdef	WIZ
47 #define	DELAY			40
48 #else
49 #define DELAY           20
50 #endif
51 
52 #define TILE_EMPTY      0
53 #define TILE_WALL       1
54 #define TILE_RIGHT      2
55 #define TILE_LEFT       3
56 #define TILE_PEAK       4
57 #define TILE_PRIORRIGHT 5
58 #define TILE_PRIORLEFT  6
59 #define TILE_STRONG     7
60 #define TILE_STRONGRANDOM 10
61 #define TILE_STRONGPRIORRIGHT 8
62 #define TILE_STRONGPRIORLEFT 9
63 #define TILE_LEVITATOR  11
64 #define TILE_PAINTER    12
65 #define TILE_DESTRUCTOR 13
66 #define TILE_DEAD       99
67 #define TILE_FIRST	    40
68 #define IsTile(a)       ((a)>=TILE_FIRST)
69 #define IsLivingTile(a) ((a)>=TILE_FIRST && (a)!=TILE_DEAD)
70 #define IsEmpty(a)      ((a)==TILE_EMPTY)
71 #define IsWeak(a)       ((a)==TILE_WALL || (a)==TILE_RIGHT || (a)==TILE_LEFT || (a)==TILE_PEAK || (a)==TILE_PRIORRIGHT || (a)==TILE_PRIORLEFT)
72 #define IsRYB(a)        ((a)>=TILE_FIRST && (a)<=TILE_FIRST+2)
73 
74 #define DIR_DATA        "/usr/local/share/brikx/"
75 #define DIR_LEVEL       DIR_DATA"levels/"
76 #define DIR_MUSIC       DIR_DATA"music/"
77 #define DIR_SOUND       DIR_DATA"sounds/"
78 #define DIR_FONT        DIR_DATA"fonts/"
79 #define FILE_HIGH       DIR_DATA"high/high.dat"
80 #define FONTNAME_SCORE  DIR_FONT"bankgothic.ttf"
81 #define FONTNAME_NORMAL DIR_FONT"bankgothic.ttf"
82 
83 #ifdef	WIZRES
84 #define DIR_BACKGROUND  DIR_DATA"backgrounds-wiz/"
85 #define DIR_IMAGE       DIR_DATA"images-wiz/"
86 #define DIR_TILESET     DIR_DATA"tilesets-wiz/"
87 #define DIR_HELP        DIR_DATA"help-wiz/"
88 #else
89 #define DIR_BACKGROUND  DIR_DATA"backgrounds/"
90 #define DIR_IMAGE       DIR_DATA"images/"
91 #define DIR_TILESET     DIR_DATA"tilesets/"
92 #define DIR_HELP        DIR_DATA"help/"
93 #endif
94 
95 #ifdef	WIZRES
96 #define FONTSIZE_SCORE  12
97 #define FONTSIZE_SMALL  7
98 #else
99 #define FONTSIZE_SCORE  20
100 #define FONTSIZE_SMALL  14
101 #endif
102 
103 #define MODES   9
104 
105 #define BACKGROUND_MENU DIR_IMAGE"title_background.jpg"
106 #define BACKGROUND_BASE DIR_IMAGE"play_sidebar.png"
107 #define BACKGROUND_EDIT DIR_IMAGE"edit.png"
108 #define BACKGROUND_BYE  DIR_IMAGE"bye.jpg"
109 #define IMAGE_GAMECURSOR    DIR_IMAGE"cursor.png"
110 #define IMAGE_QUIT      DIR_IMAGE"menu_quit.png"
111 #define IMAGE_PLAY      DIR_IMAGE"menu_play.png"
112 #define IMAGE_CONTINUE  DIR_IMAGE"menu_continue.png"
113 #define IMAGE_EDIT      DIR_IMAGE"menu_edit.png"
114 #define IMAGE_YES       DIR_IMAGE"menu_yes.png"
115 #define IMAGE_NO        DIR_IMAGE"menu_no.png"
116 #define IMAGE_HELP      DIR_IMAGE"menu_help.png"
117 #define IMAGE_HIGHS     DIR_IMAGE"menu_highs.png"
118 #define IMAGE_ASKQUIT   DIR_IMAGE"ask_quit.png"
119 #define IMAGE_OPTIONS   DIR_IMAGE"menu_options.png"
120 #define IMAGE_BUILD     DIR_IMAGE"button_build.png"
121 #define IMAGE_CLEAR     DIR_IMAGE"button_clear.png"
122 #define IMAGE_NORMAL    DIR_IMAGE"button_normal.png"
123 #define IMAGE_PUSH      DIR_IMAGE"button_push.png"
124 #define IMAGE_SWAP      DIR_IMAGE"button_swap.png"
125 #define IMAGE_HELPBUTTON DIR_IMAGE"help.png"
126 #define IMAGE_AUTORELOAD DIR_IMAGE"menu_autoreload.png"
127 #define IMAGE_AUTONORMAL DIR_IMAGE"menu_autonormal.png"
128 #define IMAGE_UNDO      DIR_IMAGE"button_undo.png"
129 #define IMAGE_SAVEBUTTON DIR_IMAGE"button_save.png"
130 #define IMAGE_FULLSCREEN DIR_IMAGE"menu_fullscreen.png"
131 #define IMAGE_TILESET   DIR_IMAGE"menu_tileset.png"
132 #define IMAGE_DIFFICULTY DIR_IMAGE"menu_difficulty.png"
133 #define IMAGE_BGALPHA   DIR_IMAGE"menu_bgalpha.png"
134 #define IMAGE_CURSOR    DIR_IMAGE"menu_cursor.png"
135 #define IMAGE_BACK      DIR_IMAGE"menu_back.png"
136 #define IMAGE_TICK      DIR_IMAGE"tick.png"
137 #define IMAGE_CROSS     DIR_IMAGE"cross.png"
138 #define IMAGE_EDITPLAY	DIR_IMAGE"play.png"
139 #define IMAGE_MAXIMUMS  DIR_IMAGE"max.png"
140 #define IMAGE_LOAD	    DIR_IMAGE"load.png"
141 #define IMAGE_SAVE	    DIR_IMAGE"save.png"
142 #define IMAGE_CLOCK	    DIR_IMAGE"clock.png"
143 #define IMAGE_TIMER	    DIR_IMAGE"timer.png"
144 #define IMAGE_SAND 	    DIR_IMAGE"sand.png"
145 #define IMAGE_RELOAD	DIR_IMAGE"reload.png"
146 #define IMAGE_SHINE     DIR_IMAGE"shine"
147 #define IMAGE_TOOLCURSOR DIR_IMAGE"tools_cursor.png"
148 #define SHINE_FRAMES    70
149 #define SHINE_SPEED     30
150 #define MUSIC_PLAY      DIR_MUSIC"brikx.xm"
151 
152 #ifdef	WIZ
153 #define ALPHA1	255
154 #define ALPHA2  255
155 #else
156 #define ALPHA1	80
157 #define ALPHA2  160
158 #endif
159 
160 #define	AUDIO_RATE				44100
161 #define	AUDIO_FORMAT			AUDIO_S16
162 #define AUDIO_CHANNELS			2
163 #define	AUDIO_BUFFERS			1024
164 
165 #define SOUND_BALL DIR_SOUND"ball.wav"
166 #define SOUND_DISAPPEAR DIR_SOUND"disappear.wav"
167 
168 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
169 #define           rmask (0xff000000)
170 #define           gmask (0x00ff0000)
171 #define           bmask (0x0000ff00)
172 #define           amask (0x000000ff)
173 #else
174 #define           rmask (0x000000ff)
175 #define           gmask (0x0000ff00)
176 #define           bmask (0x00ff0000)
177 #define           amask (0xff000000)
178 #endif
179 
180 struct high_entry
181 {
182     long score;
183     int level,difficulty;
184     char name[NAME_MAXLEN+1];
185 };
186 
187 
188 typedef high_entry high[MAX_HIGHENTRIES];
189 typedef int level[8][8];
190 typedef int maxes[MODES];
191 
192 char *configdir();
193 int strcmpi(const char *a1, const char *a2);
194 SDL_Surface *LoadImage(char *fname,int Rkey=-1,int Gkey=-0,int Bkey=0);
195 void PutSurface(SDL_Surface *src,SDL_Surface *dest,SDL_Rect pos,int clipx=-1,int clipy=-1,int width=-1,int height=-1);
196 void PutSurface(SDL_Surface *src,SDL_Surface *dest,int x=0,int y=0,int clipx=-1,int clipy=-1,int width=-1,int height=-1);
197 int LoadLevel(char *fname,level &t,maxes &m,char *text=NULL);
198 int SaveLevel(char *fname,level t,int timelimit,maxes m,char *text=NULL);
199 int Input(SDL_Surface *screen,TTF_Font *font,SDL_Color color,int x,int y,char *s,int maxlen);
200 int SaveHigh(long score,int level,int difficulty,char *name);
201 int SaveGame(level table,long score,int levnum,long timer,int timelimit,int diff,maxes m,char *name="0",char *leveltext=NULL);
202 int LoadGame(level &table,long &score,int &levnum,long &timer,int &timelimit,int &diff,maxes &m,char *name="0",char *leveltext=NULL);
203 int LoadShinePos(char *fname,int &dx,int &dy);
204 void GetNextSet(char *name);
205 #endif
206