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 #ifndef GLOBAL_H 21 #define GLOBAL_H 22 23 #include <string> 24 25 class Racers; 26 class Enemys; 27 class Shots; 28 class Explosions; 29 class Items; 30 class Wrecks; 31 class Banners; 32 class SmokePuffs; 33 class Options; 34 35 extern Racers *racers; 36 extern Enemys *enemys; 37 extern Shots *shots; 38 extern Explosions *explosions; 39 extern Items *items; 40 extern Wrecks *wrecks; 41 extern Banners *banners; 42 extern SmokePuffs *smokePuffs; 43 extern Options *levelConf; 44 45 extern int GAME_LENGTH; 46 extern bool scrollingOn; 47 extern bool nukeIsInPlace; 48 extern bool playMusicOn; 49 extern bool onePlayerGame; 50 extern bool arcadeGame; 51 extern int difficultyLevel; 52 extern float actBackgroundPos; 53 54 void parseGlobalConfigValues( int difficultyLevel ); 55 int getRandValue( const int *choicesWeights, int nrChoices, int sumWeights=0 ); 56 void initAllSurfaces(); 57 58 // screen options 59 const int SCREEN_WIDTH = 640; 60 const int SCREEN_HEIGHT = 480; 61 const int BIT_DEPTH = 24; 62 63 const int MAX_PLAYER_CNT = 2; 64 65 // the speed of the background scrolling 66 const float SCROLL_SPEED = 20; 67 68 // where is the absolute border of no return for the heatseeker? 69 // they have a chance to return within SCREEN_BORDER pixels outside the screen... 70 // outside this area shots are deleted 71 const int SHOT_SCREEN_BORDER = 50; 72 73 74 /********************************* ARCADE MODE ***********************************/ 75 76 const int ARCADE_DIFFICULTY_LEVEL = 4; 77 const int ARCADE_POINTS_PER_TEN_SECONDS = 30; 78 79 // BANNER_RANDOM: no real mode, just the value to choose one randomly 80 enum BannerModes { BANNER_MODE_FLY_FROM_LEFT=0, 81 BANNER_MODE_FROM_TOP, 82 BANNER_MODE_ITEM_COLLECTED_SINGLE_PLAYER, 83 BANNER_MODE_ITEM_COLLECTED_PLAYER_ONE, 84 BANNER_MODE_ITEM_COLLECTED_PLAYER_TWO, 85 BANNER_MODE_RANDOM=1000 }; 86 const int BANNER_MODE_LIFETIME[] = { 5000, 5000, 2000, 2000, 2000 }; 87 const int NR_BANNER_MODES = 2; 88 89 enum BannerTexts { BANNER_EXCELLENT=0, BANNER_YOU_RULE, BANNER_HEIHO, 90 BANNER_HEALTH, BANNER_ENEMYS_KILLED, 91 BANNER_ITEM_HEALTH_COLLECTED, 92 BANNER_ITEM_PRIMARY_UPGRADE_COLLECTED, 93 BANNER_ITEM_DUMBFIRE_DOUBLE_COLLECTED, 94 BANNER_ITEM_KICK_ASS_ROCKET_COLLECTED, 95 BANNER_ITEM_HELLFIRE_COLLECTED, 96 BANNER_ITEM_MACHINE_GUN_COLLECTED, 97 BANNER_ITEM_HEATSEEKER_COLLECTED, 98 BANNER_ITEM_NUKE_COLLECTED, 99 BANNER_ITEM_DEFLECTOR_COLLECTED, 100 BANNER_ITEM_ENERGY_BEAM_COLLECTED, 101 BANNER_ITEM_LASER_COLLECTED }; 102 const std::string FN_BANNER_TEXTS[] = 103 { "/usr/local/share/alienblaster/images/bannerExcellent.bmp", 104 "/usr/local/share/alienblaster/images/bannerYouRule.bmp", 105 "/usr/local/share/alienblaster/images/bannerHeiho.bmp", 106 "/usr/local/share/alienblaster/images/bannerHealth.bmp", 107 "/usr/local/share/alienblaster/images/bannerEnemysKilled.bmp", 108 "/usr/local/share/alienblaster/images/bannerItemHealthCollected.bmp", 109 "/usr/local/share/alienblaster/images/bannerItemPrimaryUpgradeCollected.bmp", 110 "/usr/local/share/alienblaster/images/bannerItemDumbfireDoubleCollected.bmp", 111 "/usr/local/share/alienblaster/images/bannerItemKickAssRocketCollected.bmp", 112 "/usr/local/share/alienblaster/images/bannerItemHellfireCollected.bmp", 113 "/usr/local/share/alienblaster/images/bannerItemMachineGunCollected.bmp", 114 "/usr/local/share/alienblaster/images/bannerItemHeatseekerCollected.bmp", 115 "/usr/local/share/alienblaster/images/bannerItemNukeCollected.bmp", 116 "/usr/local/share/alienblaster/images/bannerItemDeflectorCollected.bmp", 117 "/usr/local/share/alienblaster/images/bannerItemEnergyBeamCollected.bmp", 118 "/usr/local/share/alienblaster/images/bannerItemLaserCollected.bmp" }; 119 const int NR_BANNER_TEXTS = 3; 120 121 enum BannerBoni { BANNER_BONUS_100=0, 122 BANNER_BONUS_200, 123 BANNER_BONUS_NONE=1000 }; 124 const std::string FN_BANNER_BONUS[] = 125 { "/usr/local/share/alienblaster/images/bannerBonus100.bmp", 126 "/usr/local/share/alienblaster/images/bannerBonus200.bmp" }; 127 const int NR_BANNER_BONI = 2; 128 129 const float ARCADE_POINTS_FOR_FORMATION_DESTRUCTION = 100; 130 const BannerBoni ARCADE_BONUS_FOR_FORMATION_DESTRUCTION = BANNER_BONUS_100; 131 132 const float ARCADE_POINTS_FOR_ENEMYS_KILLED = 200; 133 const BannerBoni ARCADE_BONUS_FOR_ENEMYS_KILLED = BANNER_BONUS_200; 134 135 const int NR_ARCACE_POINTS_FOR_HEALTH_ITEM = 7; 136 const float ARCADE_POINTS_FOR_HEALTH_ITEM[ NR_ARCACE_POINTS_FOR_HEALTH_ITEM ] = 137 { 2000, 5000, 10000, 15000, 25000, 35000, 50000 }; 138 139 140 /********************************** ITEMS ****************************************/ 141 142 enum ItemTypes { ITEM_PRIMARY_UPGRADE=0, 143 ITEM_DUMBFIRE_DOUBLE, 144 ITEM_KICK_ASS_ROCKET, 145 ITEM_HELLFIRE, 146 ITEM_MACHINE_GUN, 147 ITEM_HEALTH, 148 ITEM_HEATSEEKER, 149 ITEM_NUKE, 150 ITEM_DEFLECTOR, 151 ITEM_LASER, 152 ITEM_ENERGY_BEAM }; 153 154 const int NR_ITEM_TYPES = 11; 155 156 extern int ITEM_LIFETIME; // ms 157 extern int ITEM_APPEAR_DELAY; // ms 158 extern int ITEM_APPEAR_RAND_DELAY; // ms 159 160 // ITEM_HEALTH_REPAIR_AMOUNT points are restored, if collected 161 extern int ITEM_HEALTH_REPAIR_AMOUNT; 162 // if collected by heavy fighter the amount will be multiplied by this factor 163 const float ITEM_HEALTH_REPAIR_FACTOR_HEAVY_FIGHTER = 2.0; 164 165 // if collected ITEM_HEATSEEKER_AMMO rockets can be fired 166 extern int ITEM_HEATSEEKER_AMMO; 167 extern int ITEM_NUKE_AMMO; 168 extern int ITEM_DEFLECTOR_AMMO; 169 170 extern int ITEM_DEFLECTOR_DURATION; 171 extern int ITEM_DEFLECTOR_ACTIVATION_DIST; 172 extern int ITEM_DEFLECTOR_POWER; 173 174 // the items have different probabilities to appear. 175 // bigger number -> greater chance 176 extern int ITEM_APPEAR_CHANCES[]; 177 178 enum ExplosionTypes { EXPLOSION_NORMAL_AIR=0, EXPLOSION_NORMAL_GROUND }; 179 const int NR_EXPLOSION_TYPES = 2; 180 const int LIFETIME_EXPL_NORMAL = 1500; 181 182 const int NUKE_EFFECT_DURATION = 1000; 183 const int NUKE_QUAKE_EFFECT = 40; 184 185 enum ShipTypes { LIGHT_FIGHTER=0, HEAVY_FIGHTER }; 186 const int NR_SHIPS = 2; 187 188 189 /*********************************** SHOTS ********************************/ 190 191 192 enum ShotTypes { SHOT_NORMAL=0, 193 SHOT_NORMAL_HEAVY, 194 SHOT_DOUBLE, 195 SHOT_DOUBLE_HEAVY, 196 SHOT_TRIPLE, 197 SHOT_HF_NORMAL, 198 SHOT_HF_DOUBLE, 199 SHOT_HF_TRIPLE, 200 SHOT_HF_QUATTRO, 201 SHOT_HF_QUINTO, 202 SHOT_DUMBFIRE=100, 203 SHOT_DUMBFIRE_DOUBLE, 204 SHOT_KICK_ASS_ROCKET, 205 SHOT_HELLFIRE, 206 SHOT_MACHINE_GUN, 207 SHOT_ENERGY_BEAM, 208 SHOT_HF_DUMBFIRE, 209 SHOT_HF_DUMBFIRE_DOUBLE, 210 SHOT_HF_KICK_ASS_ROCKET, 211 SHOT_HF_LASER, 212 ENEMY_SHOT_NORMAL=1000, 213 ENEMY_SHOT_TANK_ROCKET, 214 SPECIAL_SHOT_HEATSEEKER=10000, 215 SPECIAL_SHOT_NUKE }; 216 const int NR_SECONDARY_WEAPONS = 10; 217 218 enum SpecialTypes { SPECIAL_NONE=0, SPECIAL_NUKE, SPECIAL_HEATSEEKER, SPECIAL_DEFLECTOR }; 219 const int NR_SPECIALS = 4; 220 221 // after that many ms the shot is expired 222 const int LIFETIME_SHOT_NORMAL = 5000; 223 const int LIFETIME_SHOT_NORMAL_HEAVY = 5000; 224 const int LIFETIME_SHOT_DOUBLE = 5000; 225 const int LIFETIME_SHOT_DOUBLE_HEAVY = 5000; 226 const int LIFETIME_SHOT_TRIPLE = 5000; 227 const int LIFETIME_SHOT_HF_NORMAL = 6000; 228 const int LIFETIME_SHOT_HF_DOUBLE = 6000; 229 const int LIFETIME_SHOT_HF_TRIPLE = 6000; 230 const int LIFETIME_SHOT_HF_QUATTRO = 6000; 231 const int LIFETIME_SHOT_HF_QUINTO = 6000; 232 233 const int LIFETIME_SHOT_DUMBFIRE = 6000; 234 const int LIFETIME_SHOT_DUMBFIRE_DOUBLE = 6000; 235 const int LIFETIME_SHOT_KICK_ASS_ROCKET = 7000; 236 const int LIFETIME_SHOT_HELLFIRE = 6000; 237 const int LIFETIME_SHOT_MACHINE_GUN = 5000; 238 const int LIFETIME_SHOT_ENERY_BEAM = 5000; 239 240 const int LIFETIME_SHOT_HF_DUMBFIRE = 6000; 241 const int LIFETIME_SHOT_HF_DUMBFIRE_DOUBLE = 6000; 242 const int LIFETIME_SHOT_HF_KICK_ASS_ROCKET = 7000; 243 const int LIFETIME_SHOT_HF_LASER = 2000; 244 245 const int LIFETIME_SPECIAL_SHOT_HEATSEEKER = 10000; 246 const int LIFETIME_SPECIAL_SHOT_NUKE = 10000; 247 248 const int VEL_SHOT_NORMAL = 150; 249 const int VEL_SHOT_NORMAL_HEAVY = 150; 250 const int VEL_SHOT_DOUBLE = 150; 251 const int VEL_SHOT_DOUBLE_HEAVY = 150; 252 const int VEL_SHOT_TRIPLE = 150; 253 254 const int VEL_SHOT_HF_NORMAL = 180; 255 const int VEL_SHOT_HF_DOUBLE = 180; 256 const int VEL_SHOT_HF_TRIPLE = 180; 257 const int VEL_SHOT_HF_QUATTRO = 180; 258 const int VEL_SHOT_HF_QUINTO = 180; 259 260 const int VEL_SHOT_DUMBFIRE = 100; 261 const int VEL_SHOT_DUMBFIRE_DOUBLE = 100; 262 const int VEL_SHOT_KICK_ASS_ROCKET = 80; 263 const int VEL_SHOT_HELLFIRE = 110; 264 const int VEL_SHOT_MACHINE_GUN = 130; 265 const int VEL_SHOT_ENERGY_BEAM = 105; 266 267 const int VEL_SHOT_HF_DUMBFIRE = 160; 268 const int VEL_SHOT_HF_DUMBFIRE_DOUBLE = 160; 269 const int VEL_SHOT_HF_KICK_ASS_ROCKET = 80; 270 const int VEL_SHOT_HF_LASER = 600; 271 272 const int VEL_SPECIAL_SHOT_HEATSEEKER = 130; 273 const int VEL_SPECIAL_SHOT_NUKE = 180; 274 275 const float DAMAGE_SHOT_NORMAL = 5; 276 const float DAMAGE_SHOT_NORMAL_HEAVY = 8; 277 const float DAMAGE_SHOT_DOUBLE = 5; 278 const float DAMAGE_SHOT_DOUBLE_HEAVY = 8; 279 const float DAMAGE_SHOT_TRIPLE = 7; 280 281 const int DAMAGE_SHOT_HF_NORMAL = 20; 282 const int DAMAGE_SHOT_HF_DOUBLE = 20; 283 const int DAMAGE_SHOT_HF_TRIPLE = 20; 284 const int DAMAGE_SHOT_HF_QUATTRO = 20; 285 const int DAMAGE_SHOT_HF_QUINTO = 20; 286 287 const float DAMAGE_SHOT_DUMBFIRE = 40; 288 const float DAMAGE_SHOT_DUMBFIRE_DOUBLE = 30; 289 const float DAMAGE_SHOT_KICK_ASS_ROCKET = 151; // should kill a tank/turret with one shot 290 const float DAMAGE_SHOT_HELLFIRE = 50; 291 const float DAMAGE_SHOT_MACHINE_GUN = 8; 292 const float DAMAGE_SHOT_ENERGY_BEAM = 80; 293 294 const int DAMAGE_SHOT_HF_DUMBFIRE = 40; 295 const int DAMAGE_SHOT_HF_DUMBFIRE_DOUBLE = 40; 296 const int DAMAGE_SHOT_HF_KICK_ASS_ROCKET = 151; 297 const int DAMAGE_SHOT_HF_LASER = 70; 298 299 const float DAMAGE_SPECIAL_SHOT_HEATSEEKER = 20; 300 const float DAMAGE_SPECIAL_SHOT_NUKE = 250; 301 302 const int SPREAD_ANGLE_SHOT_NORMAL = 6; 303 304 const int LIFETIME_ENEMY_SHOT_NORMAL = 6000; 305 const int LIFETIME_ENEMY_SHOT_TANK_ROCKET = 10000; 306 307 const int VEL_ENEMY_SHOT_NORMAL = 130; 308 const int VEL_ENEMY_SHOT_TANK_ROCKET = 70; 309 310 const float DAMAGE_ENEMY_SHOT_NORMAL = 8; 311 const float DAMAGE_ENEMY_SHOT_TANK_ROCKET = 25; 312 313 /***************************** SMOKE PUFFS ***************************/ 314 315 enum SmokePuffTypes { SMOKE_PUFF_SMALL=0, SMOKE_PUFF_MEDIUM }; 316 const int NR_SMOKE_PUFF_TYPES = 2; 317 const std::string FN_SMOKE_PUFF[ NR_SMOKE_PUFF_TYPES ] = 318 { "/usr/local/share/alienblaster/images/smokePuffSmall.bmp", 319 "/usr/local/share/alienblaster/images/smokePuffMedium.bmp" }; 320 const int LIFETIME_SMOKE_PUFF[ NR_SMOKE_PUFF_TYPES ] = { 500, 1000 }; 321 const int SMOKE_PUFF_DELAY_TO_NEXT_PUFF[ NR_SMOKE_PUFF_TYPES ] = { 100, 100 }; 322 const float SMOKE_PUFF_VELOCITY_FACTOR = 0.3; 323 const bool SMOKE_PUFF_ALPHA_BLENDING = true; 324 325 /********************************** ENEMIES ********************************/ 326 327 328 enum EnemyTypes { 329 FIGHTER=0, 330 BOMBER, 331 TANK, 332 BOSS_1_MAIN_GUN, 333 BOSS_1_ROCKET_LAUNCHER, 334 BOSS_1_SHOT_BATTERY_RIGHT, 335 BOSS_1_SHOT_BATTERY_LEFT, 336 BOSS_2}; 337 const int NR_ENEMY_TYPES = 8; 338 const int NR_ENEMY_TYPES_NORMAL = 3; 339 const int NR_ENEMY_TYPES_BOSS_1 = 4; 340 341 const float BOSS_1_END_Y = 110; 342 343 enum WreckTypes { 344 WRECK_FIGHTER=0, 345 WRECK_BOMBER, 346 WRECK_TANK, 347 WRECK_BOSS_1_MAIN_GUN, 348 WRECK_BOSS_1_ROCKET_LAUNCHER, 349 WRECK_BOSS_1_BATTERY_RIGHT, 350 WRECK_BOSS_1_BATTERY_LEFT, 351 WRECK_BOSS_1_BACKGROUND, 352 WRECK_BOSS_1_DESTROYED, 353 WRECK_BOSS_2_DESTROYED }; 354 const int NR_WRECK_TYPES = 10; 355 const WreckTypes WRECK_FOR_ENEMYTYPE[] = { 356 WRECK_FIGHTER, 357 WRECK_BOMBER, 358 WRECK_TANK, 359 WRECK_BOSS_1_MAIN_GUN, 360 WRECK_BOSS_1_ROCKET_LAUNCHER, 361 WRECK_BOSS_1_BATTERY_RIGHT, 362 WRECK_BOSS_1_BATTERY_LEFT, 363 WRECK_BOSS_2_DESTROYED }; 364 365 extern int GENERATE_ENEMY_DELAY; 366 extern int GENERATE_ENEMY_RAND_DELAY; 367 368 extern int ENEMY_HITPOINTS[]; 369 //const float ENEMY_HITPOINTS[] = { 80, 120, 150, 10, 10, 10, 10 }; 370 const bool ENEMY_FLYING[] = {true, true, false, false, false, false, false, true}; 371 // determines the difference between shadow and enemy plane 372 const int ENEMY_FLYING_HEIGHT[] = {10, 15, 0, 0, 0, 0, 0, 10}; 373 const int ENEMY_POINTS_FOR_DEST[] = {10,20,20,0,0,0,0,0}; 374 375 extern int ENEMY_COLLISION_DAMAGE[]; 376 377 // the enemys have different probabilities to appear in the different levels. 378 // bigger number -> greater chance 379 extern int ENEMY_APPEAR_CHANCES[]; 380 381 // on average one of that many enemys carries an item 382 extern int ENEMY_DIES_ITEM_APPEAR_CHANCE[]; 383 384 // minimal waittime (ms) between two shots 385 extern int ENEMY_COOLDOWN_PRIMARY[]; 386 extern int ENEMY_COOLDOWN_SECONDARY[]; 387 // random additional waittime between two shots 388 extern int ENEMY_RAND_WAIT_PRIMARY[]; 389 extern int ENEMY_RAND_WAIT_SECONDARY[]; 390 391 392 393 /******************************** FORMATION ***************************************/ 394 395 396 enum FormationTypes { FORMATION_V=0, FORMATION_REVERSE_V, 397 FORMATION_BLOCK, 398 FORMATION_LINE }; 399 400 const int NR_FORMATION_TYPES = 4; 401 402 const int FORMATION_MAX_NR_ENEMYS_HARD_LIMIT[] = {7,7,7,6}; 403 extern int FORMATION_MAX_NR_ENEMYS[]; 404 405 enum FormationEnemySets { FORMATION_ENEMY_SET_DEFAULT=0, 406 FORMATION_ENEMY_SET_FIGHTER, 407 FORMATION_ENEMY_SET_BOMBER, 408 FORMATION_ENEMY_SET_FIGHTER_BOMBER }; 409 const int NR_FORMATION_ENEMY_SETS = 4; 410 411 const int FORMATION_CHANGE_ON_KILL = 1; 412 const int FORMATION_CHANGE_SPONTANEOUS = 2; 413 const int FORMATION_CHANGE_SELDOM = 4; 414 const int FORMATION_CHANGE_OFTEN = 8; 415 416 const int FORMATION_CHANGE_OFTEN_DELAY = 3000; 417 const int FORMATION_CHANGE_OFTEN_RAND_DELAY = 8000; 418 const int FORMATION_CHANGE_SELDOM_DELAY = 4000; 419 const int FORMATION_CHANGE_SELDOM_RAND_DELAY = 15000; 420 421 422 enum FormationShotPatterns { FORMATION_SP_NONE=0, 423 FORMATION_SP_RAND_FAST, 424 FORMATION_SP_RAND_MEDIUM, 425 FORMATION_SP_RAND_SLOW, 426 427 FORMATION_SP_VOLLEY_FAST, 428 FORMATION_SP_VOLLEY_MEDIUM, 429 FORMATION_SP_VOLLEY_SLOW, 430 431 FORMATION_SP_LEFT_RIGHT_FAST, 432 FORMATION_SP_LEFT_RIGHT_MEDIUM, 433 FORMATION_SP_RIGHT_LEFT_FAST, 434 FORMATION_SP_RIGHT_LEFT_MEDIUM }; 435 436 const int NR_FORMATION_SP = 11; 437 438 extern int FORMATION_SP_CHANCES[]; 439 extern int FORMATION_SP_PRIMARY_DELAY[]; 440 extern int FORMATION_SP_PRIMARY_RAND_DELAY[]; 441 442 extern int GENERATE_FORMATION_DELAY; 443 extern int GENERATE_FORMATION_RAND_DELAY; 444 445 446 447 /************************* RACER *********************************/ 448 449 450 // max speed of the racer in pixels per second 451 const float LIGHT_FIGHTER_VEL_MAX = 90; 452 const float HEAVY_FIGHTER_VEL_MAX = 60; 453 454 // shield recharge points per 100 seconds 455 extern int LIGHT_FIGHTER_SHIELD_RECHARGE; 456 extern int HEAVY_FIGHTER_SHIELD_RECHARGE; 457 458 // Cooldown rates (in ms) of the weapons 459 const int RACER_COOLDOWN_SHOT_NORMAL = 100; 460 const int RACER_COOLDOWN_SHOT_NORMAL_HEAVY = 100; 461 const int RACER_COOLDOWN_SHOT_DOUBLE = 130; 462 const int RACER_COOLDOWN_SHOT_DOUBLE_HEAVY = 130; 463 const int RACER_COOLDOWN_SHOT_TRIPLE = 130; 464 465 const int RACER_COOLDOWN_SHOT_HF_NORMAL = 300; 466 const int RACER_COOLDOWN_SHOT_HF_DOUBLE = 300; 467 const int RACER_COOLDOWN_SHOT_HF_TRIPLE = 300; 468 const int RACER_COOLDOWN_SHOT_HF_QUATTRO = 350; 469 const int RACER_COOLDOWN_SHOT_HF_QUINTO = 400; 470 471 const int RACER_COOLDOWN_DUMBFIRE = 600; 472 const int RACER_COOLDOWN_DUMBFIRE_DOUBLE = 300; 473 const int RACER_COOLDOWN_KICK_ASS_ROCKET = 1500; 474 const int RACER_COOLDOWN_HELLFIRE = 600; 475 const int RACER_COOLDOWN_MACHINE_GUN = 150; 476 const int RACER_COOLDOWN_ENERGY_BEAM = 500; 477 478 const int RACER_COOLDOWN_HF_DUMBFIRE = 600; 479 const int RACER_COOLDOWN_HF_DUMBFIRE_DOUBLE = 300; 480 const int RACER_COOLDOWN_HF_KICK_ASS_ROCKET = 1300; 481 const int RACER_COOLDOWN_HF_LASER = 700; 482 483 const int RACER_COOLDOWN_SPECIAL_HEATSEEKER = 400; 484 const int RACER_COOLDOWN_SPECIAL_NUKE = 3000; 485 486 extern int RACER_DEFLECTOR_ACTIVATION_DIST; 487 extern int RACER_DEFLECTOR_POWER; 488 extern int RACER_SONIC_ACTIVATION_DIST; 489 extern int RACER_SONIC_POWER; 490 491 // how long (in ms) does the shield glow, when the racer is hit 492 const int RACER_SHIELD_DAMAGE_LIFETIME = 200; 493 494 // shields 495 extern int LIGHT_FIGHTER_MAX_SHIELD; 496 extern int HEAVY_FIGHTER_MAX_SHIELD; 497 // hitpoints 498 extern int LIGHT_FIGHTER_MAX_DAMAGE; 499 extern int HEAVY_FIGHTER_MAX_DAMAGE; 500 501 const std::string FN_SOUND_SHOT_PRIMARY = "/usr/local/share/alienblaster/sound/shotPrimary.wav"; 502 const std::string FN_SOUND_SHOT_SECONDARY = "/usr/local/share/alienblaster/sound/shotSecondary.wav"; 503 const std::string FN_SOUND_EXPLOSION_NORMAL = "/usr/local/share/alienblaster/sound/explosion.wav"; 504 const std::string FN_SOUND_EXPLOSION_BOSS = "/usr/local/share/alienblaster/sound/explosionBoss.wav"; 505 const std::string FN_SOUND_BOSS_ALARM = "/usr/local/share/alienblaster/sound/alarm.wav"; 506 const std::string FN_SOUND_ARCADE_CONFIRM = "/usr/local/share/alienblaster/sound/alarm.wav"; 507 const std::string FN_SOUND_ARCADE_CHOOSE = "/usr/local/share/alienblaster/sound/choose.wav"; 508 const std::string FN_SOUND_INTRO_CONFIRM = "/usr/local/share/alienblaster/sound/confirm.wav"; 509 const std::string FN_SOUND_INTRO_CHOOSE = "/usr/local/share/alienblaster/sound/choose.wav"; 510 511 const std::string FN_ENEMY_FIGHTER = "/usr/local/share/alienblaster/images/fighter.bmp"; 512 const std::string FN_ENEMY_FIGHTER_SHADOW = "/usr/local/share/alienblaster/images/fighterShadow.bmp"; 513 const std::string FN_ENEMY_BOMBER = "/usr/local/share/alienblaster/images/bomber.bmp"; 514 const std::string FN_ENEMY_BOMBER_SHADOW = "/usr/local/share/alienblaster/images/bomberShadow.bmp"; 515 const std::string FN_ENEMY_TANK = "/usr/local/share/alienblaster/images/tank.bmp"; 516 const std::string FN_ENEMY_BOSS_1_MAIN_GUN = "/usr/local/share/alienblaster/images/boss1MainGun.bmp"; 517 const std::string FN_ENEMY_BOSS_1_ROCKET_LAUNCHER = "/usr/local/share/alienblaster/images/boss1RocketLauncher.bmp"; 518 const std::string FN_ENEMY_BOSS_1_SHOT_BATTERY_LEFT = "/usr/local/share/alienblaster/images/boss1ShotBatteryLeft.bmp"; 519 const std::string FN_ENEMY_BOSS_1_SHOT_BATTERY_RIGHT = "/usr/local/share/alienblaster/images/boss1ShotBatteryRight.bmp"; 520 const std::string FN_ENEMY_BOSS_2 = "/usr/local/share/alienblaster/images/boss2.bmp"; 521 const std::string FN_ENEMY_BOSS_2_SHADOW = "/usr/local/share/alienblaster/images/boss2Shadow.bmp"; 522 523 const std::string FN_WRECK_FIGHTER = "/usr/local/share/alienblaster/images/wreckFighter.bmp"; 524 const std::string FN_WRECK_BOMBER = "/usr/local/share/alienblaster/images/wreckBomber.bmp"; 525 const std::string FN_WRECK_TANK = "/usr/local/share/alienblaster/images/wreckTank.bmp"; 526 const std::string FN_WRECK_BOSS_1 = "/usr/local/share/alienblaster/images/wreckBoss1.bmp"; 527 const std::string FN_WRECK_BOSS_1_BACKGROUND = "/usr/local/share/alienblaster/images/wreckBossBackground.bmp"; 528 const std::string FN_WRECK_BOSS_1_DESTROYED = "/usr/local/share/alienblaster/images/boss.bmp"; 529 const std::string FN_WRECK_BOSS_2_DESTROYED = "/usr/local/share/alienblaster/images/wreckBoss2.bmp"; 530 531 const std::string FN_SHOT_NORMAL = "/usr/local/share/alienblaster/images/normalShot.bmp"; 532 const std::string FN_SHOT_NORMAL_HEAVY = "/usr/local/share/alienblaster/images/heavyShot.bmp"; 533 const std::string FN_SHOT_DOUBLE = "/usr/local/share/alienblaster/images/normalShot.bmp"; 534 const std::string FN_SHOT_DOUBLE_HEAVY = "/usr/local/share/alienblaster/images/heavyShot.bmp"; 535 const std::string FN_SHOT_TRIPLE = "/usr/local/share/alienblaster/images/heavyShot.bmp"; 536 537 const std::string FN_SHOT_HF_NORMAL = "/usr/local/share/alienblaster/images/normalShotHF.bmp"; 538 const std::string FN_SHOT_HF_DOUBLE = "/usr/local/share/alienblaster/images/normalShotHF.bmp"; 539 const std::string FN_SHOT_HF_TRIPLE = "/usr/local/share/alienblaster/images/normalShotHF.bmp"; 540 const std::string FN_SHOT_HF_QUATTRO = "/usr/local/share/alienblaster/images/normalShotHF.bmp"; 541 const std::string FN_SHOT_HF_QUINTO = "/usr/local/share/alienblaster/images/normalShotHF.bmp"; 542 543 const std::string FN_SHOT_DUMBFIRE = "/usr/local/share/alienblaster/images/dumbfire.bmp"; 544 const std::string FN_SHOT_DUMBFIRE_DOUBLE = "/usr/local/share/alienblaster/images/dumbfire.bmp"; 545 const std::string FN_SHOT_KICK_ASS_ROCKET = "/usr/local/share/alienblaster/images/kickAssRocket.bmp"; 546 const std::string FN_SHOT_KICK_ASS_ROCKET_SHADOW = "/usr/local/share/alienblaster/images/kickAssRocketShadow.bmp"; 547 const std::string FN_SHOT_HELLFIRE = "/usr/local/share/alienblaster/images/hellfire.bmp"; 548 const std::string FN_SHOT_HELLFIRE_SHADOW = "/usr/local/share/alienblaster/images/hellfireShadow.bmp"; 549 const std::string FN_SHOT_MACHINE_GUN = "/usr/local/share/alienblaster/images/machineGun.bmp"; 550 const std::string FN_SHOT_ENERGY_BEAM = "/usr/local/share/alienblaster/images/energyBeam.bmp"; 551 552 const std::string FN_SHOT_HF_DUMBFIRE = "/usr/local/share/alienblaster/images/dumbfire.bmp"; 553 const std::string FN_SHOT_HF_DUMBFIRE_DOUBLE = "/usr/local/share/alienblaster/images/dumbfire.bmp"; 554 const std::string FN_SHOT_HF_KICK_ASS_ROCKET = "/usr/local/share/alienblaster/images/kickAssRocket.bmp"; 555 const std::string FN_SHOT_HF_KICK_ASS_ROCKET_SHADOW = "/usr/local/share/alienblaster/images/kickAssRocketShadow.bmp"; 556 const std::string FN_SHOT_HF_LASER = "/usr/local/share/alienblaster/images/laser.bmp"; 557 558 const std::string FN_ENEMY_SHOT_NORMAL = "/usr/local/share/alienblaster/images/enemyShotNormal.bmp"; 559 const std::string FN_ENEMY_SHOT_TANK_ROCKET = "/usr/local/share/alienblaster/images/tankRocket.bmp"; 560 const std::string FN_ENEMY_SHOT_TANK_ROCKET_SHADOW = "/usr/local/share/alienblaster/images/tankRocketShadow.bmp"; 561 562 const std::string FN_SPECIAL_SHOT_HEATSEEKER = "/usr/local/share/alienblaster/images/heatseeker.bmp"; 563 const std::string FN_SPECIAL_SHOT_NUKE = "/usr/local/share/alienblaster/images/shotNuke.bmp"; 564 const std::string FN_SPECIAL_SHOT_NUKE_SHADOW = "/usr/local/share/alienblaster/images/shotNukeShadow.bmp"; 565 const std::string FN_NUKE_EFFECT = "/usr/local/share/alienblaster/images/nukeEffect.bmp"; 566 const std::string FN_SONIC_EFFECT = "/usr/local/share/alienblaster/images/sonic.bmp"; 567 568 const std::string FN_ITEM_PRIMARY_UPGRADE = "/usr/local/share/alienblaster/images/itemPrimaryUpgrade.bmp"; 569 const std::string FN_ITEM_DUMBFIRE_DOUBLE = "/usr/local/share/alienblaster/images/itemDumbfireDouble.bmp"; 570 const std::string FN_ITEM_KICK_ASS_ROCKET = "/usr/local/share/alienblaster/images/itemKickAssRocket.bmp"; 571 const std::string FN_ITEM_HELLFIRE = "/usr/local/share/alienblaster/images/itemHellfire.bmp"; 572 const std::string FN_ITEM_MACHINE_GUN = "/usr/local/share/alienblaster/images/itemMachineGun.bmp"; 573 const std::string FN_ITEM_HEALTH = "/usr/local/share/alienblaster/images/itemHealth.bmp"; 574 const std::string FN_ITEM_HEATSEEKER = "/usr/local/share/alienblaster/images/itemHeatseeker.bmp"; 575 const std::string FN_ITEM_NUKE = "/usr/local/share/alienblaster/images/itemNuke.bmp"; 576 const std::string FN_ITEM_DEFLECTOR = "/usr/local/share/alienblaster/images/itemDeflector.bmp"; 577 const std::string FN_ITEM_ENERGY_BEAM = "/usr/local/share/alienblaster/images/itemEnergyBeam.bmp"; 578 const std::string FN_ITEM_LASER = "/usr/local/share/alienblaster/images/itemLaser.bmp"; 579 580 const std::string FN_ALIENBLASTER_INTRO = "/usr/local/share/alienblaster/images/alienblasterintro.bmp"; 581 const std::string FN_ALIENBLASTER_ICON = "/usr/local/share/alienblaster/images/alienblastericon.bmp"; 582 const std::string FN_BACKGROUND = "/usr/local/share/alienblaster/images/background.bmp"; 583 const std::string FN_PAUSED = "/usr/local/share/alienblaster/images/paused.bmp"; 584 const std::string FN_YOU_LOSE = "/usr/local/share/alienblaster/images/youLose.bmp"; 585 const std::string FN_YOU_WIN = "/usr/local/share/alienblaster/images/youWin.bmp"; 586 const std::string FN_GAME_OVER = "/usr/local/share/alienblaster/images/gameOver.bmp"; 587 const std::string FN_ARCADE_LOGO = "/usr/local/share/alienblaster/images/arcadeLogo.bmp"; 588 589 // numbers of images (animation-frames) per racer 590 const int RACER_IMAGE_CNT = 9; 591 592 const std::string FN_LIGHT_FIGHTER_1 = "/usr/local/share/alienblaster/images/lightFighter1.bmp"; 593 const std::string FN_LIGHT_FIGHTER_2 = "/usr/local/share/alienblaster/images/lightFighter2.bmp"; 594 const std::string FN_LIGHT_FIGHTER_SHADOW = "/usr/local/share/alienblaster/images/lightFighterShadow.bmp"; 595 const std::string FN_LIGHT_FIGHTER_SHIELD_DAMAGED = "/usr/local/share/alienblaster/images/lightFighterShieldDamaged.bmp"; 596 const std::string FN_LIGHT_FIGHTER_1_ICON = "/usr/local/share/alienblaster/images/lightFighter1Icon.bmp"; 597 const std::string FN_LIGHT_FIGHTER_2_ICON = "/usr/local/share/alienblaster/images/lightFighter2Icon.bmp"; 598 const std::string FN_LIGHT_FIGHTER_1_SMALL = "/usr/local/share/alienblaster/images/lightFighter1Small.bmp"; 599 const std::string FN_LIGHT_FIGHTER_2_SMALL = "/usr/local/share/alienblaster/images/lightFighter2Small.bmp"; 600 601 const std::string FN_HEAVY_FIGHTER_1 = "/usr/local/share/alienblaster/images/heavyFighter1.bmp"; 602 const std::string FN_HEAVY_FIGHTER_2 = "/usr/local/share/alienblaster/images/heavyFighter2.bmp"; 603 const std::string FN_HEAVY_FIGHTER_SHADOW = "/usr/local/share/alienblaster/images/heavyFighterShadow.bmp"; 604 const std::string FN_HEAVY_FIGHTER_SHIELD_DAMAGED = "/usr/local/share/alienblaster/images/heavyFighterShieldDamaged.bmp"; 605 const std::string FN_HEAVY_FIGHTER_DEFLECTOR = "/usr/local/share/alienblaster/images/heavyFighterDeflector.bmp"; 606 const std::string FN_HEAVY_FIGHTER_1_ICON = "/usr/local/share/alienblaster/images/heavyFighter1Icon.bmp"; 607 const std::string FN_HEAVY_FIGHTER_2_ICON = "/usr/local/share/alienblaster/images/heavyFighter2Icon.bmp"; 608 const std::string FN_HEAVY_FIGHTER_1_SMALL = "/usr/local/share/alienblaster/images/heavyFighter1Small.bmp"; 609 const std::string FN_HEAVY_FIGHTER_2_SMALL = "/usr/local/share/alienblaster/images/heavyFighter2Small.bmp"; 610 611 const std::string FN_ICONS_SPECIALS = "/usr/local/share/alienblaster/images/iconsSpecials.bmp"; 612 const std::string FN_ICONS_SECONDARY_WEAPONS = "/usr/local/share/alienblaster/images/iconsSecondaryWeapons.bmp"; 613 614 const std::string FN_HITPOINTS_STAT = "/usr/local/share/alienblaster/images/hpStat.bmp"; 615 616 const std::string FN_INTRO_SHOW_CHOICE = "/usr/local/share/alienblaster/images/menuIcon.bmp"; 617 618 const std::string FN_FONT_PATH = "/usr/local/share/alienblaster/images/"; 619 const std::string FN_FONT_SUFFIX_SURFACE = ".bmp"; 620 const std::string FN_FONT_INTRO = "/usr/local/share/alienblaster/images/font-20white.bmp"; 621 const std::string FN_FONT_INTRO_HIGHLIGHTED = "/usr/local/share/alienblaster/images/font-20lightblue.bmp"; 622 const std::string FN_FONT_NUMBERS_TIME = "/usr/local/share/alienblaster/images/font-20red.bmp"; 623 const std::string FN_FONT_NUMBERS_LEFT = "/usr/local/share/alienblaster/images/font-20red.bmp"; 624 const std::string FN_FONT_NUMBERS_RIGHT = "/usr/local/share/alienblaster/images/font-20blue.bmp"; 625 const std::string FN_FONT_SETTINGS = "/usr/local/share/alienblaster/images/font-20white.bmp"; 626 const std::string FN_FONT_SETTINGS_HIGHLIGHTED = "/usr/local/share/alienblaster/images/font-20lightblue.bmp"; 627 const std::string FN_FONT_SETTINGS_SMALL = "/usr/local/share/alienblaster/images/font-14white.bmp"; 628 const std::string FN_FONT_SETTINGS_SMALL_BLUE = "/usr/local/share/alienblaster/images/font-14lightblue.bmp"; 629 const std::string FN_FONT_SETTINGS_SMALL_HIGHLIGHTED = "/usr/local/share/alienblaster/images/font-14red.bmp"; 630 631 const std::string FN_SETTINGS_BLUE = "/usr/local/share/alienblaster/images/bluePlain.bmp"; 632 const std::string FN_SETTINGS_WHITE = "/usr/local/share/alienblaster/images/whitePlain.bmp"; 633 634 const std::string FN_EXPLOSION_NORMAL = "/usr/local/share/alienblaster/images/explosion.bmp"; 635 const std::string FN_EXPLOSION_ENEMY = "/usr/local/share/alienblaster/images/explosionEnemy.bmp"; 636 637 const std::string FN_LOADING = "/usr/local/share/alienblaster/images/loading.bmp"; 638 639 const std::string FN_SETTINGS = "/usr/local/share/alienblaster/cfg/alienBlaster.cfg"; 640 641 const std::string FN_DIFFICULTY_CONFIG = "/usr/local/share/alienblaster/cfg/alienBlasterDifficulty"; 642 const std::string FN_DIFFICULTY_CONFIG_SUFFIX = ".cfg"; 643 644 const std::string FN_HIGHSCORE = "/usr/local/share/alienblaster/cfg/highscore.dat"; 645 646 enum MusicTracks { MUSIC_INTRO=0, MUSIC_PLAYON, MUSIC_BOSS1, MUSIC_NONE }; 647 const int NR_MUSIC_TRACKS = 3; 648 const std::string FN_MUSIC[] = { "/usr/local/share/alienblaster/sound/intro.wav", 649 "/usr/local/share/alienblaster/sound/playon.wav", 650 "/usr/local/share/alienblaster/sound/intro.wav" }; 651 652 const std::string FN_LEVEL_ONE_PLAYER = "/usr/local/share/alienblaster/cfg/level1.cfg"; 653 const std::string FN_LEVEL_TWO_PLAYER = "/usr/local/share/alienblaster/cfg/level2.cfg"; 654 const std::string FN_LEVEL_ARCADEMODE = "/usr/local/share/alienblaster/cfg/levelArcade.cfg"; 655 656 const std::string FN_SCREENSHOT0 = "/usr/local/share/alienblaster/intro/HellShot0.bmp"; 657 const std::string FN_SCREENSHOT1 = "/usr/local/share/alienblaster/intro/HellShot1.bmp"; 658 const std::string FN_SCREENSHOT2 = "/usr/local/share/alienblaster/intro/HellShot2.bmp"; 659 const std::string FN_SCREENSHOT3 = "/usr/local/share/alienblaster/intro/HellShot3.bmp"; 660 const std::string FN_SCREENSHOT4 = "/usr/local/share/alienblaster/intro/HellShot5.bmp"; 661 const std::string FN_SCREENSHOT5 = "/usr/local/share/alienblaster/intro/HellShot4.bmp"; 662 const std::string FN_SCREENSHOT6 = "/usr/local/share/alienblaster/intro/HellShot6.bmp"; 663 const std::string FN_SCREENSHOT7 = "/usr/local/share/alienblaster/intro/HellShot7.bmp"; 664 const std::string FN_SCREENSHOT8 = "/usr/local/share/alienblaster/intro/HellShot8.bmp"; 665 const std::string FN_SCREENSHOT9 = "/usr/local/share/alienblaster/intro/HellShot9.bmp"; 666 667 const std::string LVL_BACKG_TILE_CNT = "BACKG_TILES"; 668 const std::string LVL_BACKG_TILE = "BACKG_TILE"; 669 const std::string LVL_BACKG_LENGTH = "BACKG_LENGTH"; 670 671 const std::string LVL_ENEMY_FIGHTER = "ENEMY_FIGHTER"; 672 const std::string LVL_ENEMY_BOMBER = "ENEMY_BOMBER"; 673 const std::string LVL_ENEMY_TANK = "ENEMY_TANK"; 674 const std::string LVL_ENEMY_BOSS_BACKGROUND = "ENEMY_BOSS_BACKGROUND"; 675 const std::string LVL_ENEMY_BOSS_DESTROYED = "ENEMY_BOSS_DESTROYED"; 676 677 const std::string LVL_WRECK_FIGHTER = "WRECK_FIGHTER"; 678 const std::string LVL_WRECK_BOMBER = "WRECK_BOMBER"; 679 const std::string LVL_WRECK_TANK = "WRECK_TANK"; 680 const std::string LVL_WRECK_BOSS_BACKGROUND = "WRECK_BOSS_BACKGROUND"; 681 const std::string LVL_WRECK_BOSS_DESTROYED = "WRECK_BOSS_DESTROYED"; 682 683 const std::string LVL_ENEMY_BOSS_1_SHOT_BATTERY_RIGHT = "ENEMY_BOSS_1_SHOT_BATTERY_RIGHT"; 684 const std::string LVL_ENEMY_BOSS_1_SHOT_BATTERY_LEFT = "ENEMY_BOSS_1_SHOT_BATTERY_LEFT"; 685 const std::string LVL_ENEMY_BOSS_1_ROCKET_LAUNCHER = "ENEMY_BOSS_1_ROCKET_LAUNCHER"; 686 const std::string LVL_ENEMY_BOSS_1_MAIN_GUN = "ENEMY_BOSS_1_MAIN_GUN"; 687 688 const std::string LVL_ENEMY_FIGHTER_SHADOW = "ENEMY_FIGHTER_SHADOW"; 689 const std::string LVL_ENEMY_BOMBER_SHADOW = "ENEMY_BOMBER_SHADOW"; 690 691 #endif 692