1 /***************************************************************************
2 alienBlaster
3 Copyright (C) 2004
4 Paul Grathwohl, Arne Hormann, Daniel Kuehn, Soenke Schwardt
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 ***************************************************************************/
20 #include "global.h"
21 #include "options.h"
22 #include "asstring.h"
23 #include <iostream>
24 #include "SDL.h"
25 #include "surfaceDB.h"
26
27 using namespace std;
28
29 int GAME_LENGTH = 300000; // ms
30 int ITEM_LIFETIME = 20000; // ms
31 int ITEM_APPEAR_DELAY = 10000; // ms
32 int ITEM_APPEAR_RAND_DELAY = 20000; // ms
33 int ITEM_HEALTH_REPAIR_AMOUNT = 100;
34
35 int ITEM_HEATSEEKER_AMMO = 70;
36 int ITEM_NUKE_AMMO = 2;
37 int ITEM_DEFLECTOR_AMMO = 1;
38 int ITEM_DEFLECTOR_ACTIVATION_DIST = 200;
39 int ITEM_DEFLECTOR_POWER = 100;
40 int ITEM_DEFLECTOR_DURATION = 15000;
41
42 int ITEM_APPEAR_CHANCES[] = { 50, 20, 30, 30, 30, 50, 20, 20, 30, 20, 20 };
43
44 int GENERATE_ENEMY_DELAY = 100;
45 int GENERATE_ENEMY_RAND_DELAY = 2000;
46
47 int LIGHT_FIGHTER_MAX_SHIELD = 200;
48 int HEAVY_FIGHTER_MAX_SHIELD = 500;
49 int LIGHT_FIGHTER_MAX_DAMAGE = 200;
50 int HEAVY_FIGHTER_MAX_DAMAGE = 500;
51
52 int LIGHT_FIGHTER_SHIELD_RECHARGE = 80;
53 int HEAVY_FIGHTER_SHIELD_RECHARGE = 110;
54
55 int RACER_DEFLECTOR_ACTIVATION_DIST = 150;
56 int RACER_DEFLECTOR_POWER = 50;
57 int RACER_SONIC_ACTIVATION_DIST = 200;
58 int RACER_SONIC_POWER = 50;
59
60 int ENEMY_HITPOINTS[] = { 80, 120, 150, 2000, 1500, 1000, 1000, 3000 };
61 int ENEMY_COLLISION_DAMAGE[] = {20, 40, 0, 0, 0, 0, 0, 2000};
62 int ENEMY_DIES_ITEM_APPEAR_CHANCE[] = {15, 12, 8, 0, 0, 0, 0, 1};
63 int ENEMY_APPEAR_CHANCES[] = {40, 40, 10, 0, 0, 0, 0, 0};
64 int ENEMY_COOLDOWN_PRIMARY[] = {400, 400, 400, 50, 500, 100, 100, 300};
65 int ENEMY_COOLDOWN_SECONDARY[] = {0, 0, 2000, 0, 0, 0, 0, 600};
66 int ENEMY_RAND_WAIT_PRIMARY[] = {1500, 1000, 300, 80, 1000, 200, 200, 2000};
67 int ENEMY_RAND_WAIT_SECONDARY[] = {0, 0, 10000, 0, 0, 0, 0, 400};
68
69 int GENERATE_FORMATION_DELAY = 5000;
70 int GENERATE_FORMATION_RAND_DELAY = 20000;
71
72 int FORMATION_MAX_NR_ENEMYS[] = {7,7,7,6};
73 int FORMATION_SP_CHANCES[] = { 10, 10, 5, 5, 20, 10, 5, 20, 10, 20, 10 };
74 int FORMATION_SP_PRIMARY_DELAY[] = {0, 80, 120, 160,
75 500, 800, 1100,
76 150, 250, 150, 250};
77 int FORMATION_SP_PRIMARY_RAND_DELAY[] = { 0, 80, 120, 160,
78 1000, 1500, 2000,
79 0, 0, 0, 0 };
80
81
82
83
parseGlobalConfigValues(int difficultyLevel)84 void parseGlobalConfigValues( int difficultyLevel ) {
85
86 Options *op = 0;
87 op = new Options( FN_DIFFICULTY_CONFIG +
88 asString(difficultyLevel) +
89 FN_DIFFICULTY_CONFIG_SUFFIX );
90
91 op->getInt( "GAME_LENGTH", GAME_LENGTH );
92
93 op->getInt( "ITEM_LIFETIME", ITEM_LIFETIME );
94 op->getInt( "ITEM_APPEAR_DELAY", ITEM_APPEAR_DELAY );
95 op->getInt( "ITEM_APPEAR_RAND_DELAY", ITEM_APPEAR_RAND_DELAY );
96
97 op->getInt( "ITEM_HEALTH_REPAIR_AMOUNT", ITEM_HEALTH_REPAIR_AMOUNT );
98
99 op->getInt( "ITEM_HEATSEEKER_AMMO", ITEM_HEATSEEKER_AMMO );
100 op->getInt( "ITEM_NUKE_AMMO", ITEM_NUKE_AMMO );
101 op->getInt( "ITEM_DEFLECTOR_AMMO", ITEM_DEFLECTOR_AMMO );
102 op->getInt( "ITEM_DEFLECTOR_DURATION", ITEM_DEFLECTOR_DURATION );
103 op->getInt( "ITEM_DEFLECTOR_ACTIVATION_DIST", ITEM_DEFLECTOR_ACTIVATION_DIST );
104 op->getInt( "ITEM_DEFLECTOR_POWER", ITEM_DEFLECTOR_POWER );
105
106 op->getInt( "GENERATE_ENEMY_DELAY", GENERATE_ENEMY_DELAY );
107 op->getInt( "GENERATE_ENEMY_RAND_DELAY", GENERATE_ENEMY_RAND_DELAY );
108
109 op->getInt( "LIGHT_FIGHTER_MAX_SHIELD", LIGHT_FIGHTER_MAX_SHIELD );
110 op->getInt( "HEAVY_FIGHTER_MAX_SHIELD", HEAVY_FIGHTER_MAX_SHIELD );
111 op->getInt( "LIGHT_FIGHTER_MAX_DAMAGE", LIGHT_FIGHTER_MAX_DAMAGE );
112 op->getInt( "HEAVY_FIGHTER_MAX_DAMAGE", HEAVY_FIGHTER_MAX_DAMAGE );
113 op->getInt( "LIGHT_FIGHTER_SHIELD_RECHARGE", LIGHT_FIGHTER_SHIELD_RECHARGE );
114 op->getInt( "HEAVY_FIGHTER_SHIELD_RECHARGE", HEAVY_FIGHTER_SHIELD_RECHARGE );
115
116 op->getInt( "HEAVY_FIGHTER_DEFLECTOR_ACTIVATION_DIST",
117 RACER_DEFLECTOR_ACTIVATION_DIST );
118 op->getInt( "HEAVY_FIGHTER_DEFLECTOR_POWER",
119 RACER_DEFLECTOR_POWER );
120
121 op->getInt( "FIGHTER_HITPOINTS", ENEMY_HITPOINTS[ FIGHTER ] );
122 op->getInt( "BOMBER_HITPOINTS", ENEMY_HITPOINTS[ BOMBER ] );
123 op->getInt( "TURRET_HITPOINTS", ENEMY_HITPOINTS[ TANK ] );
124 op->getInt( "BOSS1_MAIN_GUN_HITPOINTS", ENEMY_HITPOINTS[ BOSS_1_MAIN_GUN ] );
125 op->getInt( "BOSS1_ROCKET_LAUNCHER_HITPOINTS", ENEMY_HITPOINTS[ BOSS_1_ROCKET_LAUNCHER ] );
126 op->getInt( "BOSS1_SHOT_BATTERY_LEFT_HITPOINTS",
127 ENEMY_HITPOINTS[ BOSS_1_SHOT_BATTERY_LEFT ] );
128 op->getInt( "BOSS1_SHOT_BATTERY_RIGHT_HITPOINTS",
129 ENEMY_HITPOINTS[ BOSS_1_SHOT_BATTERY_RIGHT ] );
130
131 op->getInt( "COLLISION_DAMAGE_FIGHTER", ENEMY_COLLISION_DAMAGE[ FIGHTER ] );
132 op->getInt( "COLLISION_DAMAGE_BOMBER", ENEMY_COLLISION_DAMAGE[ BOMBER ] );
133 op->getInt( "ENEMY_DIES_ITEM_APPEAR_CHANCE_FIGHTER",
134 ENEMY_DIES_ITEM_APPEAR_CHANCE[ FIGHTER ] );
135 op->getInt( "ENEMY_DIES_ITEM_APPEAR_CHANCE_BOMBER",
136 ENEMY_DIES_ITEM_APPEAR_CHANCE[ BOMBER ] );
137 op->getInt( "ENEMY_DIES_ITEM_APPEAR_CHANCE_TURRET",
138 ENEMY_DIES_ITEM_APPEAR_CHANCE[ TANK ] );
139
140 op->getInt( "ENEMY_APPEAR_CHANCE_FIGHTER",
141 ENEMY_APPEAR_CHANCES[ FIGHTER ] );
142 op->getInt( "ENEMY_APPEAR_CHANCE_BOMBER",
143 ENEMY_APPEAR_CHANCES[ BOMBER ] );
144 op->getInt( "ENEMY_APPEAR_CHANCE_TURRET",
145 ENEMY_APPEAR_CHANCES[ TANK ] );
146
147 op->getInt( "ENEMY_COOLDOWN_FIGHTER",
148 ENEMY_COOLDOWN_PRIMARY[ FIGHTER ] );
149 op->getInt( "ENEMY_COOLDOWN_BOMBER",
150 ENEMY_COOLDOWN_PRIMARY[ BOMBER ] );
151 op->getInt( "ENEMY_COOLDOWN_TURRET",
152 ENEMY_COOLDOWN_PRIMARY[ TANK ] );
153 op->getInt( "ENEMY_COOLDOWN_BOSS1_MAIN_GUN",
154 ENEMY_COOLDOWN_PRIMARY[ BOSS_1_MAIN_GUN ] );
155 op->getInt( "ENEMY_COOLDOWN_BOSS1_ROCKET_LAUNCHER",
156 ENEMY_COOLDOWN_PRIMARY[ BOSS_1_ROCKET_LAUNCHER] );
157 op->getInt( "ENEMY_COOLDOWN_BOSS1_SHOT_BATTERY_LEFT",
158 ENEMY_COOLDOWN_PRIMARY[ BOSS_1_SHOT_BATTERY_LEFT] );
159 op->getInt( "ENEMY_COOLDOWN_BOSS1_SHOT_BATTERY_RIGHT",
160 ENEMY_COOLDOWN_PRIMARY[ BOSS_1_SHOT_BATTERY_RIGHT ] );
161
162 op->getInt( "ENEMY_COOLDOWN_SECONDARY_TURRET", ENEMY_COOLDOWN_SECONDARY[ TANK ] );
163
164 op->getInt( "ENEMY_RAND_WAIT_FIGHTER",
165 ENEMY_RAND_WAIT_PRIMARY[ FIGHTER ] );
166 op->getInt( "ENEMY_RAND_WAIT_BOMBER",
167 ENEMY_RAND_WAIT_PRIMARY[ BOMBER ] );
168 op->getInt( "ENEMY_RAND_WAIT_TURRET",
169 ENEMY_RAND_WAIT_PRIMARY[ TANK ] );
170 op->getInt( "ENEMY_RAND_WAIT_BOSS1_MAIN_GUN",
171 ENEMY_RAND_WAIT_PRIMARY[ BOSS_1_MAIN_GUN ] );
172 op->getInt( "ENEMY_RAND_WAIT_BOSS1_ROCKET_LAUNCHER",
173 ENEMY_RAND_WAIT_PRIMARY[ BOSS_1_ROCKET_LAUNCHER ] );
174 op->getInt( "ENEMY_RAND_WAIT_BOSS1_SHOT_BATTERY_LEFT",
175 ENEMY_RAND_WAIT_PRIMARY[ BOSS_1_SHOT_BATTERY_LEFT ] );
176 op->getInt( "ENEMY_RAND_WAIT_BOSS1_SHOT_BATTERY_RIGHT",
177 ENEMY_RAND_WAIT_PRIMARY[ BOSS_1_SHOT_BATTERY_RIGHT ] );
178
179 op->getInt( "ENEMY_RAND_WAIT_SECONDARY_TURRET",
180 ENEMY_RAND_WAIT_SECONDARY[ TANK ] );
181
182 op->getInt( "ITEM_APPEAR_CHANCE_PRIMARY_UPGRADE",
183 ITEM_APPEAR_CHANCES[ ITEM_PRIMARY_UPGRADE ] );
184 op->getInt( "ITEM_APPEAR_CHANCE_DUMBRIFE_DOUBLE",
185 ITEM_APPEAR_CHANCES[ ITEM_DUMBFIRE_DOUBLE ] );
186 op->getInt( "ITEM_APPEAR_CHANCE_KICK_ASS_ROCKET",
187 ITEM_APPEAR_CHANCES[ ITEM_KICK_ASS_ROCKET ] );
188 op->getInt( "ITEM_APPEAR_CHANCE_HELLFIRE",
189 ITEM_APPEAR_CHANCES[ ITEM_HELLFIRE ] );
190 op->getInt( "ITEM_APPEAR_CHANCE_MACHINE_GUN",
191 ITEM_APPEAR_CHANCES[ ITEM_MACHINE_GUN ] );
192 op->getInt( "ITEM_APPEAR_CHANCE_HEALTH",
193 ITEM_APPEAR_CHANCES[ ITEM_HEALTH ] );
194 op->getInt( "ITEM_APPEAR_CHANCE_HEATSEEKER",
195 ITEM_APPEAR_CHANCES[ ITEM_HEATSEEKER ] );
196 op->getInt( "ITEM_APPEAR_CHANCE_NUKE",
197 ITEM_APPEAR_CHANCES[ ITEM_NUKE ] );
198 op->getInt( "ITEM_APPEAR_CHANCE_DEFLECTOR",
199 ITEM_APPEAR_CHANCES[ ITEM_DEFLECTOR ] );
200 op->getInt( "ITEM_APPEAR_CHANCE_ENERGY_BEAM",
201 ITEM_APPEAR_CHANCES[ ITEM_ENERGY_BEAM ] );
202 op->getInt( "ITEM_APPEAR_CHANCE_LASER",
203 ITEM_APPEAR_CHANCES[ ITEM_LASER ] );
204
205 op->getInt( "GENERATE_FORMATION_DELAY", GENERATE_FORMATION_DELAY );
206 op->getInt( "GENERATE_FORMATION_RAND_DELAY", GENERATE_FORMATION_RAND_DELAY );
207
208 op->getInt( "FORMATION_MAX_NR_ENEMYS_V",
209 FORMATION_MAX_NR_ENEMYS[ FORMATION_V ] );
210 op->getInt( "FORMATION_MAX_NR_ENEMYS_REVERSE_V",
211 FORMATION_MAX_NR_ENEMYS[ FORMATION_REVERSE_V ] );
212 op->getInt( "FORMATION_MAX_NR_ENEMYS_BLOCK",
213 FORMATION_MAX_NR_ENEMYS[ FORMATION_BLOCK ] );
214 op->getInt( "FORMATION_MAX_NR_ENEMYS_LINE",
215 FORMATION_MAX_NR_ENEMYS[ FORMATION_LINE ] );
216 for ( int i = 0; i < NR_FORMATION_TYPES; i++ ) {
217 if ( FORMATION_MAX_NR_ENEMYS[ i ] > FORMATION_MAX_NR_ENEMYS_HARD_LIMIT[ i ] )
218 FORMATION_MAX_NR_ENEMYS[ i ] = FORMATION_MAX_NR_ENEMYS_HARD_LIMIT[ i ];
219 }
220
221 op->getInt( "FORMATION_SP_CHANCE_NONE",
222 FORMATION_SP_CHANCES[ FORMATION_SP_NONE ] );
223 op->getInt( "FORMATION_SP_CHANCE_RAND_FAST",
224 FORMATION_SP_CHANCES[ FORMATION_SP_RAND_FAST ] );
225 op->getInt( "FORMATION_SP_CHANCE_RAND_MEDIUM",
226 FORMATION_SP_CHANCES[ FORMATION_SP_RAND_MEDIUM ] );
227 op->getInt( "FORMATION_SP_CHANCE_RAND_SLOW",
228 FORMATION_SP_CHANCES[ FORMATION_SP_RAND_SLOW ] );
229 op->getInt( "FORMATION_SP_CHANCE_VOLLEY_FAST",
230 FORMATION_SP_CHANCES[ FORMATION_SP_VOLLEY_FAST ] );
231 op->getInt( "FORMATION_SP_CHANCE_VOLLEY_MEDIUM",
232 FORMATION_SP_CHANCES[ FORMATION_SP_VOLLEY_MEDIUM ] );
233 op->getInt( "FORMATION_SP_CHANCE_VOLLEY_SLOW",
234 FORMATION_SP_CHANCES[ FORMATION_SP_VOLLEY_SLOW ] );
235 op->getInt( "FORMATION_SP_CHANCE_LEFT_RIGHT_FAST",
236 FORMATION_SP_CHANCES[ FORMATION_SP_LEFT_RIGHT_FAST ] );
237 op->getInt( "FORMATION_SP_CHANCE_LEFT_RIGHT_MEDIUM",
238 FORMATION_SP_CHANCES[ FORMATION_SP_LEFT_RIGHT_MEDIUM ] );
239 op->getInt( "FORMATION_SP_CHANCE_RIGHT_LEFT_FAST",
240 FORMATION_SP_CHANCES[ FORMATION_SP_RIGHT_LEFT_FAST ] );
241 op->getInt( "FORMATION_SP_CHANCE_RIGHT_LEFT_MEDIUM",
242 FORMATION_SP_CHANCES[ FORMATION_SP_RIGHT_LEFT_MEDIUM ] );
243
244 op->getInt( "FORMATION_SP_PRIM_DELAY_RAND_FAST",
245 FORMATION_SP_PRIMARY_DELAY[ FORMATION_SP_RAND_FAST ] );
246 op->getInt( "FORMATION_SP_PRIM_DELAY_RAND_MEDIUM",
247 FORMATION_SP_PRIMARY_DELAY[ FORMATION_SP_RAND_MEDIUM ] );
248 op->getInt( "FORMATION_SP_PRIM_DELAY_RAND_SLOW",
249 FORMATION_SP_PRIMARY_DELAY[ FORMATION_SP_RAND_SLOW ] );
250 op->getInt( "FORMATION_SP_PRIM_DELAY_VOLLEY_FAST",
251 FORMATION_SP_PRIMARY_DELAY[ FORMATION_SP_VOLLEY_FAST ] );
252 op->getInt( "FORMATION_SP_PRIM_DELAY_VOLLEY_MEDIUM",
253 FORMATION_SP_PRIMARY_DELAY[ FORMATION_SP_VOLLEY_MEDIUM ] );
254 op->getInt( "FORMATION_SP_PRIM_DELAY_VOLLEY_SLOW",
255 FORMATION_SP_PRIMARY_DELAY[ FORMATION_SP_VOLLEY_SLOW ] );
256 op->getInt( "FORMATION_SP_PRIM_DELAY_LEFT_RIGHT_FAST",
257 FORMATION_SP_PRIMARY_DELAY[ FORMATION_SP_LEFT_RIGHT_FAST ] );
258 op->getInt( "FORMATION_SP_PRIM_DELAY_LEFT_RIGHT_MEDIUM",
259 FORMATION_SP_PRIMARY_DELAY[ FORMATION_SP_LEFT_RIGHT_MEDIUM ] );
260 op->getInt( "FORMATION_SP_PRIM_DELAY_RIGHT_LEFT_FAST",
261 FORMATION_SP_PRIMARY_DELAY[ FORMATION_SP_RIGHT_LEFT_FAST ] );
262 op->getInt( "FORMATION_SP_PRIM_DELAY_RIGHT_LEFT_MEDIUM",
263 FORMATION_SP_PRIMARY_DELAY[ FORMATION_SP_RIGHT_LEFT_MEDIUM ] );
264
265 op->getInt( "FORMATION_SP_PRIM_RAND_DELAY_RAND_FAST",
266 FORMATION_SP_PRIMARY_RAND_DELAY[ FORMATION_SP_RAND_FAST ] );
267 op->getInt( "FORMATION_SP_PRIM_RAND_DELAY_RAND_MEDIUM",
268 FORMATION_SP_PRIMARY_RAND_DELAY[ FORMATION_SP_RAND_MEDIUM ] );
269 op->getInt( "FORMATION_SP_PRIM_RAND_DELAY_RAND_SLOW",
270 FORMATION_SP_PRIMARY_RAND_DELAY[ FORMATION_SP_RAND_SLOW ] );
271 op->getInt( "FORMATION_SP_PRIM_RAND_DELAY_VOLLEY_FAST",
272 FORMATION_SP_PRIMARY_RAND_DELAY[ FORMATION_SP_VOLLEY_FAST ] );
273 op->getInt( "FORMATION_SP_PRIM_RAND_DELAY_VOLLEY_MEDIUM",
274 FORMATION_SP_PRIMARY_RAND_DELAY[ FORMATION_SP_VOLLEY_MEDIUM ] );
275 op->getInt( "FORMATION_SP_PRIM_RAND_DELAY_VOLLEY_SLOW",
276 FORMATION_SP_PRIMARY_RAND_DELAY[ FORMATION_SP_VOLLEY_SLOW ] );
277 op->getInt( "FORMATION_SP_PRIM_RAND_DELAY_LEFT_RIGHT_FAST",
278 FORMATION_SP_PRIMARY_RAND_DELAY[ FORMATION_SP_LEFT_RIGHT_FAST ] );
279 op->getInt( "FORMATION_SP_PRIM_RAND_DELAY_LEFT_RIGHT_MEDIUM",
280 FORMATION_SP_PRIMARY_RAND_DELAY[ FORMATION_SP_LEFT_RIGHT_MEDIUM ] );
281 op->getInt( "FORMATION_SP_PRIM_RAND_DELAY_RIGHT_LEFT_FAST",
282 FORMATION_SP_PRIMARY_RAND_DELAY[ FORMATION_SP_RIGHT_LEFT_FAST ] );
283 op->getInt( "FORMATION_SP_PRIM_RAND_DELAY_RIGHT_LEFT_MEDIUM",
284 FORMATION_SP_PRIMARY_RAND_DELAY[ FORMATION_SP_RIGHT_LEFT_MEDIUM ] );
285
286 delete op;
287 }
288
289 /////////////////////
290
getRandValue(const int * choicesWeights,int nrChoices,int sumWeights)291 int getRandValue( const int *choicesWeights, int nrChoices, int sumWeights ) {
292 int sum = 0;
293 if ( sumWeights != 0 ) sum = sumWeights;
294 else for ( int i = 0; i < nrChoices; i++ ) sum += choicesWeights[ i ];
295
296 if ( sum == 0 ) {
297 cout << "Error in getRandValue: sum==0!" << endl;
298 exit(1);
299 }
300
301 int val = rand() % sum;
302
303 int idx = 0;
304 int tmpSum = 0;
305 while ( idx < nrChoices ) {
306 tmpSum += choicesWeights[ idx ];
307 if ( val < tmpSum ) {
308 return idx;
309 }
310 idx++;
311 }
312 cout << "Error in getRandValue: val: " << val << endl;
313 exit(1);
314 }
315
316
317 /////////////////////////////
318
initAllSurfaces()319 void initAllSurfaces() {
320 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/fighter.bmp" );
321 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/fighterShadow.bmp", true);
322 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/bomber.bmp");
323 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/bomberShadow.bmp", true);
324 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/tank.bmp");
325 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/boss1MainGun.bmp");
326 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/boss1RocketLauncher.bmp");
327 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/boss1ShotBatteryLeft.bmp");
328 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/boss1ShotBatteryRight.bmp");
329 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/wreckFighter.bmp");
330 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/wreckBomber.bmp");
331 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/wreckTank.bmp");
332 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/wreckBoss1.bmp");
333 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/wreckBossBackground.bmp");
334 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/boss.bmp");
335 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/normalShot.bmp");
336 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/heavyShot.bmp");
337 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/normalShotHF.bmp");
338 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/dumbfire.bmp");
339 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/kickAssRocket.bmp");
340 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/kickAssRocketShadow.bmp", true);
341 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/hellfire.bmp");
342 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/hellfireShadow.bmp", true);
343 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/machineGun.bmp");
344 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/energyBeam.bmp", true);
345 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/laser.bmp");
346 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/enemyShotNormal.bmp");
347 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/tankRocket.bmp");
348 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/tankRocketShadow.bmp", true);
349 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/heatseeker.bmp");
350 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/shotNuke.bmp");
351 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/shotNukeShadow.bmp", true);
352 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/nukeEffect.bmp");
353 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/sonic.bmp");
354 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/itemPrimaryUpgrade.bmp");
355 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/itemDumbfireDouble.bmp");
356 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/itemKickAssRocket.bmp");
357 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/itemHellfire.bmp");
358 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/itemMachineGun.bmp");
359 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/itemHealth.bmp");
360 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/itemHeatseeker.bmp");
361 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/itemNuke.bmp");
362 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/itemDeflector.bmp");
363 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/itemEnergyBeam.bmp");
364 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/itemLaser.bmp");
365 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/background.bmp");
366 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/lightFighterShieldDamaged.bmp");
367 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/heavyFighterShieldDamaged.bmp");
368 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/heavyFighterDeflector.bmp", true);
369 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/font-20red.bmp");
370 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/font-20blue.bmp");
371 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/explosion.bmp");
372 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/explosionEnemy.bmp");
373 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/bannerExcellent.bmp", true);
374 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/bannerYouRule.bmp", true);
375 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/bannerHeiho.bmp", true);
376 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/bannerHealth.bmp", true);
377 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/bannerEnemysKilled.bmp", true);
378 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/bannerBonus100.bmp", true);
379 surfaceDB.loadSurface("/usr/local/share/alienblaster/images/bannerBonus200.bmp", true);
380 }
381