693 lines
26 KiB
C++
693 lines
26 KiB
C++
/***************************************************************************
|
|
alienBlaster
|
|
Copyright (C) 2004
|
|
Paul Grathwohl, Arne Hormann, Daniel Kuehn, Soenke Schwardt
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2, or (at your option)
|
|
any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
***************************************************************************/
|
|
#ifndef GLOBAL_H
|
|
#define GLOBAL_H
|
|
|
|
#include <string>
|
|
#include "SdlForwardCompat.h"
|
|
|
|
class Racers;
|
|
class Enemys;
|
|
class Shots;
|
|
class Explosions;
|
|
class Items;
|
|
class Wrecks;
|
|
class Banners;
|
|
class SmokePuffs;
|
|
class Options;
|
|
|
|
extern Racers *racers;
|
|
extern Enemys *enemys;
|
|
extern Shots *shots;
|
|
extern Explosions *explosions;
|
|
extern Items *items;
|
|
extern Wrecks *wrecks;
|
|
extern Banners *banners;
|
|
extern SmokePuffs *smokePuffs;
|
|
extern Options *levelConf;
|
|
|
|
extern int GAME_LENGTH;
|
|
extern bool scrollingOn;
|
|
extern bool nukeIsInPlace;
|
|
extern bool playMusicOn;
|
|
extern bool onePlayerGame;
|
|
extern bool arcadeGame;
|
|
extern int difficultyLevel;
|
|
extern float actBackgroundPos;
|
|
|
|
void parseGlobalConfigValues( int difficultyLevel );
|
|
int getRandValue( const int *choicesWeights, int nrChoices, int sumWeights=0 );
|
|
void initAllSurfaces();
|
|
|
|
// screen options
|
|
const int SCREEN_WIDTH = 640;
|
|
const int SCREEN_HEIGHT = 480;
|
|
const int BIT_DEPTH = 16;
|
|
|
|
const int MAX_PLAYER_CNT = 2;
|
|
|
|
// the speed of the background scrolling
|
|
const float SCROLL_SPEED = 20;
|
|
|
|
// where is the absolute border of no return for the heatseeker?
|
|
// they have a chance to return within SCREEN_BORDER pixels outside the screen...
|
|
// outside this area shots are deleted
|
|
const int SHOT_SCREEN_BORDER = 50;
|
|
|
|
|
|
/********************************* ARCADE MODE ***********************************/
|
|
|
|
const int ARCADE_DIFFICULTY_LEVEL = 4;
|
|
const int ARCADE_POINTS_PER_TEN_SECONDS = 30;
|
|
|
|
// BANNER_RANDOM: no real mode, just the value to choose one randomly
|
|
enum BannerModes { BANNER_MODE_FLY_FROM_LEFT=0,
|
|
BANNER_MODE_FROM_TOP,
|
|
BANNER_MODE_ITEM_COLLECTED_SINGLE_PLAYER,
|
|
BANNER_MODE_ITEM_COLLECTED_PLAYER_ONE,
|
|
BANNER_MODE_ITEM_COLLECTED_PLAYER_TWO,
|
|
BANNER_MODE_RANDOM=1000 };
|
|
const int BANNER_MODE_LIFETIME[] = { 5000, 5000, 2000, 2000, 2000 };
|
|
const int NR_BANNER_MODES = 2;
|
|
|
|
enum BannerTexts { BANNER_EXCELLENT=0, BANNER_YOU_RULE, BANNER_HEIHO,
|
|
BANNER_HEALTH, BANNER_ENEMYS_KILLED,
|
|
BANNER_ITEM_HEALTH_COLLECTED,
|
|
BANNER_ITEM_PRIMARY_UPGRADE_COLLECTED,
|
|
BANNER_ITEM_DUMBFIRE_DOUBLE_COLLECTED,
|
|
BANNER_ITEM_KICK_ASS_ROCKET_COLLECTED,
|
|
BANNER_ITEM_HELLFIRE_COLLECTED,
|
|
BANNER_ITEM_MACHINE_GUN_COLLECTED,
|
|
BANNER_ITEM_HEATSEEKER_COLLECTED,
|
|
BANNER_ITEM_NUKE_COLLECTED,
|
|
BANNER_ITEM_DEFLECTOR_COLLECTED,
|
|
BANNER_ITEM_ENERGY_BEAM_COLLECTED,
|
|
BANNER_ITEM_LASER_COLLECTED };
|
|
const std::string FN_BANNER_TEXTS[] =
|
|
{ "./images/bannerExcellent.bmp",
|
|
"./images/bannerYouRule.bmp",
|
|
"./images/bannerHeiho.bmp",
|
|
"./images/bannerHealth.bmp",
|
|
"./images/bannerEnemysKilled.bmp",
|
|
"./images/bannerItemHealthCollected.bmp",
|
|
"./images/bannerItemPrimaryUpgradeCollected.bmp",
|
|
"./images/bannerItemDumbfireDoubleCollected.bmp",
|
|
"./images/bannerItemKickAssRocketCollected.bmp",
|
|
"./images/bannerItemHellfireCollected.bmp",
|
|
"./images/bannerItemMachineGunCollected.bmp",
|
|
"./images/bannerItemHeatseekerCollected.bmp",
|
|
"./images/bannerItemNukeCollected.bmp",
|
|
"./images/bannerItemDeflectorCollected.bmp",
|
|
"./images/bannerItemEnergyBeamCollected.bmp",
|
|
"./images/bannerItemLaserCollected.bmp" };
|
|
const int NR_BANNER_TEXTS = 3;
|
|
|
|
enum BannerBoni { BANNER_BONUS_100=0,
|
|
BANNER_BONUS_200,
|
|
BANNER_BONUS_NONE=1000 };
|
|
const std::string FN_BANNER_BONUS[] =
|
|
{ "./images/bannerBonus100.bmp",
|
|
"./images/bannerBonus200.bmp" };
|
|
const int NR_BANNER_BONI = 2;
|
|
|
|
const float ARCADE_POINTS_FOR_FORMATION_DESTRUCTION = 100;
|
|
const BannerBoni ARCADE_BONUS_FOR_FORMATION_DESTRUCTION = BANNER_BONUS_100;
|
|
|
|
const float ARCADE_POINTS_FOR_ENEMYS_KILLED = 200;
|
|
const BannerBoni ARCADE_BONUS_FOR_ENEMYS_KILLED = BANNER_BONUS_200;
|
|
|
|
const int NR_ARCACE_POINTS_FOR_HEALTH_ITEM = 7;
|
|
const float ARCADE_POINTS_FOR_HEALTH_ITEM[ NR_ARCACE_POINTS_FOR_HEALTH_ITEM ] =
|
|
{ 2000, 5000, 10000, 15000, 25000, 35000, 50000 };
|
|
|
|
|
|
/********************************** ITEMS ****************************************/
|
|
|
|
enum ItemTypes { ITEM_PRIMARY_UPGRADE=0,
|
|
ITEM_DUMBFIRE_DOUBLE,
|
|
ITEM_KICK_ASS_ROCKET,
|
|
ITEM_HELLFIRE,
|
|
ITEM_MACHINE_GUN,
|
|
ITEM_HEALTH,
|
|
ITEM_HEATSEEKER,
|
|
ITEM_NUKE,
|
|
ITEM_DEFLECTOR,
|
|
ITEM_LASER,
|
|
ITEM_ENERGY_BEAM };
|
|
|
|
const int NR_ITEM_TYPES = 11;
|
|
|
|
extern int ITEM_LIFETIME; // ms
|
|
extern int ITEM_APPEAR_DELAY; // ms
|
|
extern int ITEM_APPEAR_RAND_DELAY; // ms
|
|
|
|
// ITEM_HEALTH_REPAIR_AMOUNT points are restored, if collected
|
|
extern int ITEM_HEALTH_REPAIR_AMOUNT;
|
|
// if collected by heavy fighter the amount will be multiplied by this factor
|
|
const float ITEM_HEALTH_REPAIR_FACTOR_HEAVY_FIGHTER = 2.0;
|
|
|
|
// if collected ITEM_HEATSEEKER_AMMO rockets can be fired
|
|
extern int ITEM_HEATSEEKER_AMMO;
|
|
extern int ITEM_NUKE_AMMO;
|
|
extern int ITEM_DEFLECTOR_AMMO;
|
|
|
|
extern int ITEM_DEFLECTOR_DURATION;
|
|
extern int ITEM_DEFLECTOR_ACTIVATION_DIST;
|
|
extern int ITEM_DEFLECTOR_POWER;
|
|
|
|
// the items have different probabilities to appear.
|
|
// bigger number -> greater chance
|
|
extern int ITEM_APPEAR_CHANCES[];
|
|
|
|
enum ExplosionTypes { EXPLOSION_NORMAL_AIR=0, EXPLOSION_NORMAL_GROUND };
|
|
const int NR_EXPLOSION_TYPES = 2;
|
|
const int LIFETIME_EXPL_NORMAL = 1500;
|
|
|
|
const int NUKE_EFFECT_DURATION = 1000;
|
|
const int NUKE_QUAKE_EFFECT = 40;
|
|
|
|
enum ShipTypes { LIGHT_FIGHTER=0, HEAVY_FIGHTER };
|
|
const int NR_SHIPS = 2;
|
|
|
|
|
|
/*********************************** SHOTS ********************************/
|
|
|
|
|
|
enum ShotTypes { SHOT_NORMAL=0,
|
|
SHOT_NORMAL_HEAVY,
|
|
SHOT_DOUBLE,
|
|
SHOT_DOUBLE_HEAVY,
|
|
SHOT_TRIPLE,
|
|
SHOT_HF_NORMAL,
|
|
SHOT_HF_DOUBLE,
|
|
SHOT_HF_TRIPLE,
|
|
SHOT_HF_QUATTRO,
|
|
SHOT_HF_QUINTO,
|
|
SHOT_DUMBFIRE=100,
|
|
SHOT_DUMBFIRE_DOUBLE,
|
|
SHOT_KICK_ASS_ROCKET,
|
|
SHOT_HELLFIRE,
|
|
SHOT_MACHINE_GUN,
|
|
SHOT_ENERGY_BEAM,
|
|
SHOT_HF_DUMBFIRE,
|
|
SHOT_HF_DUMBFIRE_DOUBLE,
|
|
SHOT_HF_KICK_ASS_ROCKET,
|
|
SHOT_HF_LASER,
|
|
ENEMY_SHOT_NORMAL=1000,
|
|
ENEMY_SHOT_TANK_ROCKET,
|
|
SPECIAL_SHOT_HEATSEEKER=10000,
|
|
SPECIAL_SHOT_NUKE };
|
|
const int NR_SECONDARY_WEAPONS = 10;
|
|
|
|
enum SpecialTypes { SPECIAL_NONE=0, SPECIAL_NUKE, SPECIAL_HEATSEEKER, SPECIAL_DEFLECTOR };
|
|
const int NR_SPECIALS = 4;
|
|
|
|
// after that many ms the shot is expired
|
|
const int LIFETIME_SHOT_NORMAL = 5000;
|
|
const int LIFETIME_SHOT_NORMAL_HEAVY = 5000;
|
|
const int LIFETIME_SHOT_DOUBLE = 5000;
|
|
const int LIFETIME_SHOT_DOUBLE_HEAVY = 5000;
|
|
const int LIFETIME_SHOT_TRIPLE = 5000;
|
|
const int LIFETIME_SHOT_HF_NORMAL = 6000;
|
|
const int LIFETIME_SHOT_HF_DOUBLE = 6000;
|
|
const int LIFETIME_SHOT_HF_TRIPLE = 6000;
|
|
const int LIFETIME_SHOT_HF_QUATTRO = 6000;
|
|
const int LIFETIME_SHOT_HF_QUINTO = 6000;
|
|
|
|
const int LIFETIME_SHOT_DUMBFIRE = 6000;
|
|
const int LIFETIME_SHOT_DUMBFIRE_DOUBLE = 6000;
|
|
const int LIFETIME_SHOT_KICK_ASS_ROCKET = 7000;
|
|
const int LIFETIME_SHOT_HELLFIRE = 6000;
|
|
const int LIFETIME_SHOT_MACHINE_GUN = 5000;
|
|
const int LIFETIME_SHOT_ENERY_BEAM = 5000;
|
|
|
|
const int LIFETIME_SHOT_HF_DUMBFIRE = 6000;
|
|
const int LIFETIME_SHOT_HF_DUMBFIRE_DOUBLE = 6000;
|
|
const int LIFETIME_SHOT_HF_KICK_ASS_ROCKET = 7000;
|
|
const int LIFETIME_SHOT_HF_LASER = 2000;
|
|
|
|
const int LIFETIME_SPECIAL_SHOT_HEATSEEKER = 10000;
|
|
const int LIFETIME_SPECIAL_SHOT_NUKE = 10000;
|
|
|
|
const int VEL_SHOT_NORMAL = 150;
|
|
const int VEL_SHOT_NORMAL_HEAVY = 150;
|
|
const int VEL_SHOT_DOUBLE = 150;
|
|
const int VEL_SHOT_DOUBLE_HEAVY = 150;
|
|
const int VEL_SHOT_TRIPLE = 150;
|
|
|
|
const int VEL_SHOT_HF_NORMAL = 180;
|
|
const int VEL_SHOT_HF_DOUBLE = 180;
|
|
const int VEL_SHOT_HF_TRIPLE = 180;
|
|
const int VEL_SHOT_HF_QUATTRO = 180;
|
|
const int VEL_SHOT_HF_QUINTO = 180;
|
|
|
|
const int VEL_SHOT_DUMBFIRE = 100;
|
|
const int VEL_SHOT_DUMBFIRE_DOUBLE = 100;
|
|
const int VEL_SHOT_KICK_ASS_ROCKET = 80;
|
|
const int VEL_SHOT_HELLFIRE = 110;
|
|
const int VEL_SHOT_MACHINE_GUN = 130;
|
|
const int VEL_SHOT_ENERGY_BEAM = 105;
|
|
|
|
const int VEL_SHOT_HF_DUMBFIRE = 160;
|
|
const int VEL_SHOT_HF_DUMBFIRE_DOUBLE = 160;
|
|
const int VEL_SHOT_HF_KICK_ASS_ROCKET = 80;
|
|
const int VEL_SHOT_HF_LASER = 600;
|
|
|
|
const int VEL_SPECIAL_SHOT_HEATSEEKER = 130;
|
|
const int VEL_SPECIAL_SHOT_NUKE = 180;
|
|
|
|
const float DAMAGE_SHOT_NORMAL = 5;
|
|
const float DAMAGE_SHOT_NORMAL_HEAVY = 8;
|
|
const float DAMAGE_SHOT_DOUBLE = 5;
|
|
const float DAMAGE_SHOT_DOUBLE_HEAVY = 8;
|
|
const float DAMAGE_SHOT_TRIPLE = 7;
|
|
|
|
const int DAMAGE_SHOT_HF_NORMAL = 20;
|
|
const int DAMAGE_SHOT_HF_DOUBLE = 20;
|
|
const int DAMAGE_SHOT_HF_TRIPLE = 20;
|
|
const int DAMAGE_SHOT_HF_QUATTRO = 20;
|
|
const int DAMAGE_SHOT_HF_QUINTO = 20;
|
|
|
|
const float DAMAGE_SHOT_DUMBFIRE = 40;
|
|
const float DAMAGE_SHOT_DUMBFIRE_DOUBLE = 30;
|
|
const float DAMAGE_SHOT_KICK_ASS_ROCKET = 151; // should kill a tank/turret with one shot
|
|
const float DAMAGE_SHOT_HELLFIRE = 50;
|
|
const float DAMAGE_SHOT_MACHINE_GUN = 8;
|
|
const float DAMAGE_SHOT_ENERGY_BEAM = 80;
|
|
|
|
const int DAMAGE_SHOT_HF_DUMBFIRE = 40;
|
|
const int DAMAGE_SHOT_HF_DUMBFIRE_DOUBLE = 40;
|
|
const int DAMAGE_SHOT_HF_KICK_ASS_ROCKET = 151;
|
|
const int DAMAGE_SHOT_HF_LASER = 70;
|
|
|
|
const float DAMAGE_SPECIAL_SHOT_HEATSEEKER = 20;
|
|
const float DAMAGE_SPECIAL_SHOT_NUKE = 250;
|
|
|
|
const int SPREAD_ANGLE_SHOT_NORMAL = 6;
|
|
|
|
const int LIFETIME_ENEMY_SHOT_NORMAL = 6000;
|
|
const int LIFETIME_ENEMY_SHOT_TANK_ROCKET = 10000;
|
|
|
|
const int VEL_ENEMY_SHOT_NORMAL = 130;
|
|
const int VEL_ENEMY_SHOT_TANK_ROCKET = 70;
|
|
|
|
const float DAMAGE_ENEMY_SHOT_NORMAL = 8;
|
|
const float DAMAGE_ENEMY_SHOT_TANK_ROCKET = 25;
|
|
|
|
/***************************** SMOKE PUFFS ***************************/
|
|
|
|
enum SmokePuffTypes { SMOKE_PUFF_SMALL=0, SMOKE_PUFF_MEDIUM };
|
|
const int NR_SMOKE_PUFF_TYPES = 2;
|
|
const std::string FN_SMOKE_PUFF[ NR_SMOKE_PUFF_TYPES ] =
|
|
{ "./images/smokePuffSmall.bmp",
|
|
"./images/smokePuffMedium.bmp" };
|
|
const int LIFETIME_SMOKE_PUFF[ NR_SMOKE_PUFF_TYPES ] = { 500, 1000 };
|
|
const int SMOKE_PUFF_DELAY_TO_NEXT_PUFF[ NR_SMOKE_PUFF_TYPES ] = { 100, 100 };
|
|
const float SMOKE_PUFF_VELOCITY_FACTOR = 0.3;
|
|
const bool SMOKE_PUFF_ALPHA_BLENDING = true;
|
|
|
|
/********************************** ENEMIES ********************************/
|
|
|
|
|
|
enum EnemyTypes {
|
|
FIGHTER=0,
|
|
BOMBER,
|
|
TANK,
|
|
BOSS_1_MAIN_GUN,
|
|
BOSS_1_ROCKET_LAUNCHER,
|
|
BOSS_1_SHOT_BATTERY_RIGHT,
|
|
BOSS_1_SHOT_BATTERY_LEFT,
|
|
BOSS_2};
|
|
const int NR_ENEMY_TYPES = 8;
|
|
const int NR_ENEMY_TYPES_NORMAL = 3;
|
|
const int NR_ENEMY_TYPES_BOSS_1 = 4;
|
|
|
|
const float BOSS_1_END_Y = 110;
|
|
|
|
enum WreckTypes {
|
|
WRECK_FIGHTER=0,
|
|
WRECK_BOMBER,
|
|
WRECK_TANK,
|
|
WRECK_BOSS_1_MAIN_GUN,
|
|
WRECK_BOSS_1_ROCKET_LAUNCHER,
|
|
WRECK_BOSS_1_BATTERY_RIGHT,
|
|
WRECK_BOSS_1_BATTERY_LEFT,
|
|
WRECK_BOSS_1_BACKGROUND,
|
|
WRECK_BOSS_1_DESTROYED,
|
|
WRECK_BOSS_2_DESTROYED };
|
|
const int NR_WRECK_TYPES = 10;
|
|
const WreckTypes WRECK_FOR_ENEMYTYPE[] = {
|
|
WRECK_FIGHTER,
|
|
WRECK_BOMBER,
|
|
WRECK_TANK,
|
|
WRECK_BOSS_1_MAIN_GUN,
|
|
WRECK_BOSS_1_ROCKET_LAUNCHER,
|
|
WRECK_BOSS_1_BATTERY_RIGHT,
|
|
WRECK_BOSS_1_BATTERY_LEFT,
|
|
WRECK_BOSS_2_DESTROYED };
|
|
|
|
extern int GENERATE_ENEMY_DELAY;
|
|
extern int GENERATE_ENEMY_RAND_DELAY;
|
|
|
|
extern int ENEMY_HITPOINTS[];
|
|
//const float ENEMY_HITPOINTS[] = { 80, 120, 150, 10, 10, 10, 10 };
|
|
const bool ENEMY_FLYING[] = {true, true, false, false, false, false, false, true};
|
|
// determines the difference between shadow and enemy plane
|
|
const int ENEMY_FLYING_HEIGHT[] = {10, 15, 0, 0, 0, 0, 0, 10};
|
|
const int ENEMY_POINTS_FOR_DEST[] = {10,20,20,0,0,0,0,0};
|
|
|
|
extern int ENEMY_COLLISION_DAMAGE[];
|
|
|
|
// the enemys have different probabilities to appear in the different levels.
|
|
// bigger number -> greater chance
|
|
extern int ENEMY_APPEAR_CHANCES[];
|
|
|
|
// on average one of that many enemys carries an item
|
|
extern int ENEMY_DIES_ITEM_APPEAR_CHANCE[];
|
|
|
|
// minimal waittime (ms) between two shots
|
|
extern int ENEMY_COOLDOWN_PRIMARY[];
|
|
extern int ENEMY_COOLDOWN_SECONDARY[];
|
|
// random additional waittime between two shots
|
|
extern int ENEMY_RAND_WAIT_PRIMARY[];
|
|
extern int ENEMY_RAND_WAIT_SECONDARY[];
|
|
|
|
|
|
|
|
/******************************** FORMATION ***************************************/
|
|
|
|
|
|
enum FormationTypes { FORMATION_V=0, FORMATION_REVERSE_V,
|
|
FORMATION_BLOCK,
|
|
FORMATION_LINE };
|
|
|
|
const int NR_FORMATION_TYPES = 4;
|
|
|
|
const int FORMATION_MAX_NR_ENEMYS_HARD_LIMIT[] = {7,7,7,6};
|
|
extern int FORMATION_MAX_NR_ENEMYS[];
|
|
|
|
enum FormationEnemySets { FORMATION_ENEMY_SET_DEFAULT=0,
|
|
FORMATION_ENEMY_SET_FIGHTER,
|
|
FORMATION_ENEMY_SET_BOMBER,
|
|
FORMATION_ENEMY_SET_FIGHTER_BOMBER };
|
|
const int NR_FORMATION_ENEMY_SETS = 4;
|
|
|
|
const int FORMATION_CHANGE_ON_KILL = 1;
|
|
const int FORMATION_CHANGE_SPONTANEOUS = 2;
|
|
const int FORMATION_CHANGE_SELDOM = 4;
|
|
const int FORMATION_CHANGE_OFTEN = 8;
|
|
|
|
const int FORMATION_CHANGE_OFTEN_DELAY = 3000;
|
|
const int FORMATION_CHANGE_OFTEN_RAND_DELAY = 8000;
|
|
const int FORMATION_CHANGE_SELDOM_DELAY = 4000;
|
|
const int FORMATION_CHANGE_SELDOM_RAND_DELAY = 15000;
|
|
|
|
|
|
enum FormationShotPatterns { FORMATION_SP_NONE=0,
|
|
FORMATION_SP_RAND_FAST,
|
|
FORMATION_SP_RAND_MEDIUM,
|
|
FORMATION_SP_RAND_SLOW,
|
|
|
|
FORMATION_SP_VOLLEY_FAST,
|
|
FORMATION_SP_VOLLEY_MEDIUM,
|
|
FORMATION_SP_VOLLEY_SLOW,
|
|
|
|
FORMATION_SP_LEFT_RIGHT_FAST,
|
|
FORMATION_SP_LEFT_RIGHT_MEDIUM,
|
|
FORMATION_SP_RIGHT_LEFT_FAST,
|
|
FORMATION_SP_RIGHT_LEFT_MEDIUM };
|
|
|
|
const int NR_FORMATION_SP = 11;
|
|
|
|
extern int FORMATION_SP_CHANCES[];
|
|
extern int FORMATION_SP_PRIMARY_DELAY[];
|
|
extern int FORMATION_SP_PRIMARY_RAND_DELAY[];
|
|
|
|
extern int GENERATE_FORMATION_DELAY;
|
|
extern int GENERATE_FORMATION_RAND_DELAY;
|
|
|
|
|
|
|
|
/************************* RACER *********************************/
|
|
|
|
|
|
// max speed of the racer in pixels per second
|
|
const float LIGHT_FIGHTER_VEL_MAX = 90;
|
|
const float HEAVY_FIGHTER_VEL_MAX = 60;
|
|
|
|
// shield recharge points per 100 seconds
|
|
extern int LIGHT_FIGHTER_SHIELD_RECHARGE;
|
|
extern int HEAVY_FIGHTER_SHIELD_RECHARGE;
|
|
|
|
// Cooldown rates (in ms) of the weapons
|
|
const int RACER_COOLDOWN_SHOT_NORMAL = 100;
|
|
const int RACER_COOLDOWN_SHOT_NORMAL_HEAVY = 100;
|
|
const int RACER_COOLDOWN_SHOT_DOUBLE = 130;
|
|
const int RACER_COOLDOWN_SHOT_DOUBLE_HEAVY = 130;
|
|
const int RACER_COOLDOWN_SHOT_TRIPLE = 130;
|
|
|
|
const int RACER_COOLDOWN_SHOT_HF_NORMAL = 300;
|
|
const int RACER_COOLDOWN_SHOT_HF_DOUBLE = 300;
|
|
const int RACER_COOLDOWN_SHOT_HF_TRIPLE = 300;
|
|
const int RACER_COOLDOWN_SHOT_HF_QUATTRO = 350;
|
|
const int RACER_COOLDOWN_SHOT_HF_QUINTO = 400;
|
|
|
|
const int RACER_COOLDOWN_DUMBFIRE = 600;
|
|
const int RACER_COOLDOWN_DUMBFIRE_DOUBLE = 300;
|
|
const int RACER_COOLDOWN_KICK_ASS_ROCKET = 1500;
|
|
const int RACER_COOLDOWN_HELLFIRE = 600;
|
|
const int RACER_COOLDOWN_MACHINE_GUN = 150;
|
|
const int RACER_COOLDOWN_ENERGY_BEAM = 500;
|
|
|
|
const int RACER_COOLDOWN_HF_DUMBFIRE = 600;
|
|
const int RACER_COOLDOWN_HF_DUMBFIRE_DOUBLE = 300;
|
|
const int RACER_COOLDOWN_HF_KICK_ASS_ROCKET = 1300;
|
|
const int RACER_COOLDOWN_HF_LASER = 700;
|
|
|
|
const int RACER_COOLDOWN_SPECIAL_HEATSEEKER = 400;
|
|
const int RACER_COOLDOWN_SPECIAL_NUKE = 3000;
|
|
|
|
extern int RACER_DEFLECTOR_ACTIVATION_DIST;
|
|
extern int RACER_DEFLECTOR_POWER;
|
|
extern int RACER_SONIC_ACTIVATION_DIST;
|
|
extern int RACER_SONIC_POWER;
|
|
|
|
// how long (in ms) does the shield glow, when the racer is hit
|
|
const int RACER_SHIELD_DAMAGE_LIFETIME = 200;
|
|
|
|
// shields
|
|
extern int LIGHT_FIGHTER_MAX_SHIELD;
|
|
extern int HEAVY_FIGHTER_MAX_SHIELD;
|
|
// hitpoints
|
|
extern int LIGHT_FIGHTER_MAX_DAMAGE;
|
|
extern int HEAVY_FIGHTER_MAX_DAMAGE;
|
|
|
|
const std::string FN_SOUND_SHOT_PRIMARY = "./sound/shotPrimary.wav";
|
|
const std::string FN_SOUND_SHOT_SECONDARY = "./sound/shotSecondary.wav";
|
|
const std::string FN_SOUND_EXPLOSION_NORMAL = "./sound/explosion.wav";
|
|
const std::string FN_SOUND_EXPLOSION_BOSS = "./sound/explosionBoss.wav";
|
|
const std::string FN_SOUND_BOSS_ALARM = "./sound/alarm.wav";
|
|
const std::string FN_SOUND_ARCADE_CONFIRM = "./sound/alarm.wav";
|
|
const std::string FN_SOUND_ARCADE_CHOOSE = "./sound/choose.wav";
|
|
const std::string FN_SOUND_INTRO_CONFIRM = "./sound/confirm.wav";
|
|
const std::string FN_SOUND_INTRO_CHOOSE = "./sound/choose.wav";
|
|
|
|
const std::string FN_ENEMY_FIGHTER = "./images/fighter.bmp";
|
|
const std::string FN_ENEMY_FIGHTER_SHADOW = "./images/fighterShadow.bmp";
|
|
const std::string FN_ENEMY_BOMBER = "./images/bomber.bmp";
|
|
const std::string FN_ENEMY_BOMBER_SHADOW = "./images/bomberShadow.bmp";
|
|
const std::string FN_ENEMY_TANK = "./images/tank.bmp";
|
|
const std::string FN_ENEMY_BOSS_1_MAIN_GUN = "./images/boss1MainGun.bmp";
|
|
const std::string FN_ENEMY_BOSS_1_ROCKET_LAUNCHER = "./images/boss1RocketLauncher.bmp";
|
|
const std::string FN_ENEMY_BOSS_1_SHOT_BATTERY_LEFT = "./images/boss1ShotBatteryLeft.bmp";
|
|
const std::string FN_ENEMY_BOSS_1_SHOT_BATTERY_RIGHT = "./images/boss1ShotBatteryRight.bmp";
|
|
const std::string FN_ENEMY_BOSS_2 = "./images/boss2.bmp";
|
|
const std::string FN_ENEMY_BOSS_2_SHADOW = "./images/boss2Shadow.bmp";
|
|
|
|
const std::string FN_WRECK_FIGHTER = "./images/wreckFighter.bmp";
|
|
const std::string FN_WRECK_BOMBER = "./images/wreckBomber.bmp";
|
|
const std::string FN_WRECK_TANK = "./images/wreckTank.bmp";
|
|
const std::string FN_WRECK_BOSS_1 = "./images/wreckBoss1.bmp";
|
|
const std::string FN_WRECK_BOSS_1_BACKGROUND = "./images/wreckBossBackground.bmp";
|
|
const std::string FN_WRECK_BOSS_1_DESTROYED = "./images/boss.bmp";
|
|
const std::string FN_WRECK_BOSS_2_DESTROYED = "./images/wreckBoss2.bmp";
|
|
|
|
const std::string FN_SHOT_NORMAL = "./images/normalShot.bmp";
|
|
const std::string FN_SHOT_NORMAL_HEAVY = "./images/heavyShot.bmp";
|
|
const std::string FN_SHOT_DOUBLE = "./images/normalShot.bmp";
|
|
const std::string FN_SHOT_DOUBLE_HEAVY = "./images/heavyShot.bmp";
|
|
const std::string FN_SHOT_TRIPLE = "./images/heavyShot.bmp";
|
|
|
|
const std::string FN_SHOT_HF_NORMAL = "./images/normalShotHF.bmp";
|
|
const std::string FN_SHOT_HF_DOUBLE = "./images/normalShotHF.bmp";
|
|
const std::string FN_SHOT_HF_TRIPLE = "./images/normalShotHF.bmp";
|
|
const std::string FN_SHOT_HF_QUATTRO = "./images/normalShotHF.bmp";
|
|
const std::string FN_SHOT_HF_QUINTO = "./images/normalShotHF.bmp";
|
|
|
|
const std::string FN_SHOT_DUMBFIRE = "./images/dumbfire.bmp";
|
|
const std::string FN_SHOT_DUMBFIRE_DOUBLE = "./images/dumbfire.bmp";
|
|
const std::string FN_SHOT_KICK_ASS_ROCKET = "./images/kickAssRocket.bmp";
|
|
const std::string FN_SHOT_KICK_ASS_ROCKET_SHADOW = "./images/kickAssRocketShadow.bmp";
|
|
const std::string FN_SHOT_HELLFIRE = "./images/hellfire.bmp";
|
|
const std::string FN_SHOT_HELLFIRE_SHADOW = "./images/hellfireShadow.bmp";
|
|
const std::string FN_SHOT_MACHINE_GUN = "./images/machineGun.bmp";
|
|
const std::string FN_SHOT_ENERGY_BEAM = "./images/energyBeam.bmp";
|
|
|
|
const std::string FN_SHOT_HF_DUMBFIRE = "./images/dumbfire.bmp";
|
|
const std::string FN_SHOT_HF_DUMBFIRE_DOUBLE = "./images/dumbfire.bmp";
|
|
const std::string FN_SHOT_HF_KICK_ASS_ROCKET = "./images/kickAssRocket.bmp";
|
|
const std::string FN_SHOT_HF_KICK_ASS_ROCKET_SHADOW = "./images/kickAssRocketShadow.bmp";
|
|
const std::string FN_SHOT_HF_LASER = "./images/laser.bmp";
|
|
|
|
const std::string FN_ENEMY_SHOT_NORMAL = "./images/enemyShotNormal.bmp";
|
|
const std::string FN_ENEMY_SHOT_TANK_ROCKET = "./images/tankRocket.bmp";
|
|
const std::string FN_ENEMY_SHOT_TANK_ROCKET_SHADOW = "./images/tankRocketShadow.bmp";
|
|
|
|
const std::string FN_SPECIAL_SHOT_HEATSEEKER = "./images/heatseeker.bmp";
|
|
const std::string FN_SPECIAL_SHOT_NUKE = "./images/shotNuke.bmp";
|
|
const std::string FN_SPECIAL_SHOT_NUKE_SHADOW = "./images/shotNukeShadow.bmp";
|
|
const std::string FN_NUKE_EFFECT = "./images/nukeEffect.bmp";
|
|
const std::string FN_SONIC_EFFECT = "./images/sonic.bmp";
|
|
|
|
const std::string FN_ITEM_PRIMARY_UPGRADE = "./images/itemPrimaryUpgrade.bmp";
|
|
const std::string FN_ITEM_DUMBFIRE_DOUBLE = "./images/itemDumbfireDouble.bmp";
|
|
const std::string FN_ITEM_KICK_ASS_ROCKET = "./images/itemKickAssRocket.bmp";
|
|
const std::string FN_ITEM_HELLFIRE = "./images/itemHellfire.bmp";
|
|
const std::string FN_ITEM_MACHINE_GUN = "./images/itemMachineGun.bmp";
|
|
const std::string FN_ITEM_HEALTH = "./images/itemHealth.bmp";
|
|
const std::string FN_ITEM_HEATSEEKER = "./images/itemHeatseeker.bmp";
|
|
const std::string FN_ITEM_NUKE = "./images/itemNuke.bmp";
|
|
const std::string FN_ITEM_DEFLECTOR = "./images/itemDeflector.bmp";
|
|
const std::string FN_ITEM_ENERGY_BEAM = "./images/itemEnergyBeam.bmp";
|
|
const std::string FN_ITEM_LASER = "./images/itemLaser.bmp";
|
|
|
|
const std::string FN_ALIENBLASTER_INTRO = "./images/alienblasterintro.bmp";
|
|
const std::string FN_ALIENBLASTER_ICON = "./images/alienblastericon.bmp";
|
|
const std::string FN_BACKGROUND = "./images/background.bmp";
|
|
const std::string FN_PAUSED = "./images/paused.bmp";
|
|
const std::string FN_YOU_LOSE = "./images/youLose.bmp";
|
|
const std::string FN_YOU_WIN = "./images/youWin.bmp";
|
|
const std::string FN_GAME_OVER = "./images/gameOver.bmp";
|
|
const std::string FN_ARCADE_LOGO = "./images/arcadeLogo.bmp";
|
|
|
|
// numbers of images (animation-frames) per racer
|
|
const int RACER_IMAGE_CNT = 9;
|
|
|
|
const std::string FN_LIGHT_FIGHTER_1 = "./images/lightFighter1.bmp";
|
|
const std::string FN_LIGHT_FIGHTER_2 = "./images/lightFighter2.bmp";
|
|
const std::string FN_LIGHT_FIGHTER_SHADOW = "./images/lightFighterShadow.bmp";
|
|
const std::string FN_LIGHT_FIGHTER_SHIELD_DAMAGED = "./images/lightFighterShieldDamaged.bmp";
|
|
const std::string FN_LIGHT_FIGHTER_1_ICON = "./images/lightFighter1Icon.bmp";
|
|
const std::string FN_LIGHT_FIGHTER_2_ICON = "./images/lightFighter2Icon.bmp";
|
|
const std::string FN_LIGHT_FIGHTER_1_SMALL = "./images/lightFighter1Small.bmp";
|
|
const std::string FN_LIGHT_FIGHTER_2_SMALL = "./images/lightFighter2Small.bmp";
|
|
|
|
const std::string FN_HEAVY_FIGHTER_1 = "./images/heavyFighter1.bmp";
|
|
const std::string FN_HEAVY_FIGHTER_2 = "./images/heavyFighter2.bmp";
|
|
const std::string FN_HEAVY_FIGHTER_SHADOW = "./images/heavyFighterShadow.bmp";
|
|
const std::string FN_HEAVY_FIGHTER_SHIELD_DAMAGED = "./images/heavyFighterShieldDamaged.bmp";
|
|
const std::string FN_HEAVY_FIGHTER_DEFLECTOR = "./images/heavyFighterDeflector.bmp";
|
|
const std::string FN_HEAVY_FIGHTER_1_ICON = "./images/heavyFighter1Icon.bmp";
|
|
const std::string FN_HEAVY_FIGHTER_2_ICON = "./images/heavyFighter2Icon.bmp";
|
|
const std::string FN_HEAVY_FIGHTER_1_SMALL = "./images/heavyFighter1Small.bmp";
|
|
const std::string FN_HEAVY_FIGHTER_2_SMALL = "./images/heavyFighter2Small.bmp";
|
|
|
|
const std::string FN_ICONS_SPECIALS = "./images/iconsSpecials.bmp";
|
|
const std::string FN_ICONS_SECONDARY_WEAPONS = "./images/iconsSecondaryWeapons.bmp";
|
|
|
|
const std::string FN_HITPOINTS_STAT = "./images/hpStat.bmp";
|
|
|
|
const std::string FN_INTRO_SHOW_CHOICE = "./images/menuIcon.bmp";
|
|
|
|
const std::string FN_FONT_PATH = "./images/";
|
|
const std::string FN_FONT_SUFFIX_SURFACE = ".bmp";
|
|
const std::string FN_FONT_INTRO = "./images/font-20white";
|
|
const std::string FN_FONT_INTRO_HIGHLIGHTED = "./images/font-20lightblue";
|
|
const std::string FN_FONT_NUMBERS_TIME = "./images/font-20red";
|
|
const std::string FN_FONT_NUMBERS_LEFT = "./images/font-20red";
|
|
const std::string FN_FONT_NUMBERS_RIGHT = "./images/font-20blue";
|
|
const std::string FN_FONT_SETTINGS = "./images/font-20white";
|
|
const std::string FN_FONT_SETTINGS_HIGHLIGHTED = "./images/font-20lightblue";
|
|
const std::string FN_FONT_SETTINGS_SMALL = "./images/font-14white";
|
|
const std::string FN_FONT_SETTINGS_SMALL_BLUE = "./images/font-14lightblue";
|
|
const std::string FN_FONT_SETTINGS_SMALL_HIGHLIGHTED = "./images/font-14red";
|
|
|
|
const std::string FN_SETTINGS_BLUE = "./images/bluePlain.bmp";
|
|
const std::string FN_SETTINGS_WHITE = "./images/whitePlain.bmp";
|
|
|
|
const std::string FN_EXPLOSION_NORMAL = "./images/explosion.bmp";
|
|
const std::string FN_EXPLOSION_ENEMY = "./images/explosionEnemy.bmp";
|
|
|
|
const std::string FN_LOADING = "./images/loading.bmp";
|
|
|
|
const std::string FN_SETTINGS = "./cfg/alienBlaster.cfg";
|
|
|
|
const std::string FN_DIFFICULTY_CONFIG = "./cfg/alienBlasterDifficulty";
|
|
const std::string FN_DIFFICULTY_CONFIG_SUFFIX = ".cfg";
|
|
|
|
const std::string FN_HIGHSCORE = "./cfg/highscore.dat";
|
|
|
|
enum MusicTracks { MUSIC_INTRO=0, MUSIC_PLAYON, MUSIC_BOSS1, MUSIC_NONE };
|
|
const int NR_MUSIC_TRACKS = 3;
|
|
const std::string FN_MUSIC[] = { "./sound/intro.wav",
|
|
"./sound/playon.wav",
|
|
"./sound/intro.wav" };
|
|
|
|
const std::string FN_LEVEL_ONE_PLAYER = "./cfg/level1.cfg";
|
|
const std::string FN_LEVEL_TWO_PLAYER = "./cfg/level2.cfg";
|
|
const std::string FN_LEVEL_ARCADEMODE = "./cfg/levelArcade.cfg";
|
|
|
|
const std::string FN_SCREENSHOT0 = "./intro/HellShot0.bmp";
|
|
const std::string FN_SCREENSHOT1 = "./intro/HellShot1.bmp";
|
|
const std::string FN_SCREENSHOT2 = "./intro/HellShot2.bmp";
|
|
const std::string FN_SCREENSHOT3 = "./intro/HellShot3.bmp";
|
|
const std::string FN_SCREENSHOT4 = "./intro/HellShot5.bmp";
|
|
const std::string FN_SCREENSHOT5 = "./intro/HellShot4.bmp";
|
|
const std::string FN_SCREENSHOT6 = "./intro/HellShot6.bmp";
|
|
const std::string FN_SCREENSHOT7 = "./intro/HellShot7.bmp";
|
|
const std::string FN_SCREENSHOT8 = "./intro/HellShot8.bmp";
|
|
const std::string FN_SCREENSHOT9 = "./intro/HellShot9.bmp";
|
|
|
|
const std::string LVL_BACKG_TILE_CNT = "BACKG_TILES";
|
|
const std::string LVL_BACKG_TILE = "BACKG_TILE";
|
|
const std::string LVL_BACKG_LENGTH = "BACKG_LENGTH";
|
|
|
|
const std::string LVL_ENEMY_FIGHTER = "ENEMY_FIGHTER";
|
|
const std::string LVL_ENEMY_BOMBER = "ENEMY_BOMBER";
|
|
const std::string LVL_ENEMY_TANK = "ENEMY_TANK";
|
|
const std::string LVL_ENEMY_BOSS_BACKGROUND = "ENEMY_BOSS_BACKGROUND";
|
|
const std::string LVL_ENEMY_BOSS_DESTROYED = "ENEMY_BOSS_DESTROYED";
|
|
|
|
const std::string LVL_WRECK_FIGHTER = "WRECK_FIGHTER";
|
|
const std::string LVL_WRECK_BOMBER = "WRECK_BOMBER";
|
|
const std::string LVL_WRECK_TANK = "WRECK_TANK";
|
|
const std::string LVL_WRECK_BOSS_BACKGROUND = "WRECK_BOSS_BACKGROUND";
|
|
const std::string LVL_WRECK_BOSS_DESTROYED = "WRECK_BOSS_DESTROYED";
|
|
|
|
const std::string LVL_ENEMY_BOSS_1_SHOT_BATTERY_RIGHT = "ENEMY_BOSS_1_SHOT_BATTERY_RIGHT";
|
|
const std::string LVL_ENEMY_BOSS_1_SHOT_BATTERY_LEFT = "ENEMY_BOSS_1_SHOT_BATTERY_LEFT";
|
|
const std::string LVL_ENEMY_BOSS_1_ROCKET_LAUNCHER = "ENEMY_BOSS_1_ROCKET_LAUNCHER";
|
|
const std::string LVL_ENEMY_BOSS_1_MAIN_GUN = "ENEMY_BOSS_1_MAIN_GUN";
|
|
|
|
const std::string LVL_ENEMY_FIGHTER_SHADOW = "ENEMY_FIGHTER_SHADOW";
|
|
const std::string LVL_ENEMY_BOMBER_SHADOW = "ENEMY_BOMBER_SHADOW";
|
|
|
|
#endif
|