//these constants must be non-zero only on my computer - for debug purposes
#define Z_DEBUG             0

#ifndef Z_DEBUG2
        #define Z_DEBUG2            0
#endif

//демо-версия ли щас
#define DEMO_VERSION              0
//для демо-версий (и не только) - уровень, дальше которого не играется
#define MAX_LEVEL_NUM             9

//
//#define ST_DEBUG            0

//------------------------------------------------------------------------------------------
//кол-во уровней в игре
#define MAX_LEVEL                       10

//есть ли летательный уровень после обычного уровня
//                                      1  2  3  4  5  6  7  8  9  10
static int bHaveFlyLevel[MAX_LEVEL] = { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 };

//параметры движения карты на летательном уровне. для каждого уровня свои
//                                       1    2    3    4    5    6    7    8    9   10
//максимальная скорость - пиксели в секунду
static int bMapMaxSpeed[MAX_LEVEL] = { 280, 280, 280, 300, 320, 330, 340, 360,   0,   0 };
//начальная скорость - пиксели в секунду
static int bMapMinSpeed[MAX_LEVEL] = {  80,  90, 120, 140, 170, 180, 200, 210, 100, 100 };

//ускорение - за сколько милиссекунд скорость карты достигет bMapMaxSpeed (разгон сразу после достижения bMapMinSpeed)
//                                        1     2     3     4     5     6     7     8     9    10
static int bMapAccTime[MAX_LEVEL]  = { 6000, 6000, 6000,10000,11000,15000,18000, 6000, 6000, 6000 };

//ускорение - за сколько милиссекунд скорость карты достигет bMapMinSpeed с нуля (разгон сразу после загрузки)
#define MAP_INIT_ACCELERATION_TIME     1000

//за сколько милиссекунд скорость карты разгоняется до былого уровня после паузы
#define MAP_ACCEL_TIME_AFTER_PAUSE     1000

// расстояние на которое может выехать тележка за пределы экрана по Y
#define SCREEN_FIELD_VEHI_LIM_TOP 60  
#define SCREEN_FIELD_VEHI_LIM_BTM 20

//режим игры
//1 - самолетик тупо находится под курсором
//2 - самолетик летает с физикой
//3 - самолетик летит к курсору без ускорения со скоростью MAX_VEHI_SPEED
#define GAME_MODE       2


//максимальная скорость движения самолета - пиксели в секунду
#define MAX_VEHI_SPEED              3000 

//ускорение движения самолета
#define VEH_MAX_ACCELERATION        2500

//ускорение торможения самолета
#define VEH_STOP_ACCELERATION        1500

//------------------------------------------------------------------------------------------
//параметры режима 2:

//не использовать ускорение - всегда ездит с MAX_VEHI_SPEED
#define DISABLE_ACCELERATION                    1

//переменные для обработки медленного движения мышью (для GAME_MODE==2):
//обрабатывать медленного движения мышью
#define USE_SLOW_MOUSE_MODE                     1

//если за такт мышку сдвинули меньше чем на MOUSE_PIXELS_MAX, то обрабатываем в режиме
//медленного движения мышью
#define MOUSE_PIXELS_MAX                        10
//при обработке, если сдвинули меньше чем на MOUSE_PIXELS_MIN, то считаем, что сдвинули на MOUSE_PIXELS_MIN
#define MOUSE_PIXELS_MIN                        1 


//------------------------------------------------------------------------------------------
//константы для мигания босса
#define BOSS_DAMAGE_GAMMA               0x0E4040
#define BOSS_GAMMA_TIME1                50
#define BOSS_GAMMA_TIME2                50

//максимальный damage боссу
#define MAX_BOSS_DAMAGE         40
//минимальный damage боссу
#define MIN_BOSS_DAMAGE                 30

//------------------------------------------------------------------------------------------
//длительность умирания росянки
#define ROSJANKA_DEATH_TIME              3000
//vid взрыва на смерть росянки
#define ROSJANKA_DEATH_BLOW              601
//частота рождения взрыва (каждые ROSJANKA_BLOW_PERIOD миллисекунд будет рожаться новый взрыв)
#define ROSJANKA_BLOW_PERIOD             200
//разброс рождения взрывов
#define ROSJANKA_BLOW_RAZBROS_X          100
#define ROSJANKA_BLOW_RAZBROS_Y          100
//пауза после смерти росянки перед загрузкой нового уровня
#define PAUSE_AFTER_BOSS_DEATH           2000


//------------------------------------------------------------------------------------------
//параметры падения кристаллов

//скорость по координате x (пиксели в секунду)
#define FALLIN_CRYSTAL_SPEED_X          50
//начальная скорость по координате y (пиксели в секунду). минус означает, что кристалл сначала вверх подлетает
#define FALLIN_CRYSTAL_SPEED_Y          -50
//ускорение скорости по координате y (пиксели в секунду^2). чем больше, тем быстрее падает.
#define FALLIN_CRYSTAL_SPEED_Y_ACC      200

//------------------------------------------------------------------------------------------
//параметры подпрыгивания кристаллов после разбиения клетки
//начальная скорость по координате z (пиксели в секунду).
#define NEW_CRYSTAL_SPEED_Z          130
//ускорение скорости по координате z (пиксели в секунду^2). чем меньше, тем быстрее упадет обратно.
#define NEW_CRYSTAL_SPEED_Z_ACC     -200
//
#define NEW_CRYSTAL_INIT_Z           20

//------------------------------------------------------------------------------------------
//вызываем функцию рождения 1 раз в WIN_GOLD_PERIOD_TIME милисекунд
#define WIN_GOLD_PERIOD_TIME           200
//скорость падающего золота по x вычисляется случайно от WIN_GOLD_SPEED_X_MIN до WIN_GOLD_SPEED_X_MAX
//значения должны быть больше нуля
#define WIN_GOLD_SPEED_X_MIN           0
#define WIN_GOLD_SPEED_X_MAX           180
//скорость падающего золота по y вычисляется случайно от WIN_GOLD_SPEED_Y_MIN до WIN_GOLD_SPEED_Y_MAX
//значения должны быть больше нуля
#define WIN_GOLD_SPEED_Y_MIN           50
#define WIN_GOLD_SPEED_Y_MAX           300
//ускорение скорости по координате y (пиксели в секунду^2). чем больше, тем быстрее падает.
#define WIN_GOLD_SPEED_Y_ACC           200

//кол-во объектов, оторые падают в конце игры при победе
#define WIN_GOL_VIDS_COUNT                              5
//виды объектов, оторые падают в конце игры при победе
static int bWinGoldVids[WIN_GOL_VIDS_COUNT] = {1315, 1316, 1317, 1318, 1319};
//кол-во объектов из bWinGoldVids, рожаемых за один вызов функции рождения
static int bWinGoldVidsCnt[WIN_GOL_VIDS_COUNT] = {15, 1, 3, 3, 20};

//------------------------------------------------------------------------------------------
//номер звука в статистике
#define STATISTICS_SFX            66
//звук при полете ракетки на летном уровне
#define FLYING_VEHI_SFX           60

//------------------------------------------------------------------------------------------
//высота, на которую опускается цилиндр 415
#define CYL_NEAREST_Z            -30
//скорость, с которой опускается цилиндр 415
#define CYL_SPEED_Z               25
//периодичность, с которой опускается-поднимается цилиндр 415 (в миллисекундах)
#define CYL_TACT_TIME             5000

//------------------------------------------------------------------------------------------
//высота текста 4-го vid`а в help-menu`шках
#define HELPMENU_FONT4_VID_SIZE   18

//за столько кристаллов дается жизнь. внимание!
//из-за особенностей движка после смены этого параметра может слететь полоска кристаллов,
//когда их набрана полная полоска, поэтому менять через zmpeter`а.
#define CRYSTALS_FOR_LIFE         20


//------------------------------------------------------------------------------------------
//время, за которое игрок должен пройти подуровень, чтобы ему дали 100%
static int giSubLevTimes[45] = 
{
//level01
        60, 100, 110, 70, 160,
//level02
        190, 170, 140, 180, 180,
//level03
        120, 150, 180, 190, 120,
//level04
        60, 140, 240, 190, 240,
//level05
        100, 140, 240, 180, 250,
//level06
        230, 160, 245, 140, 140,
//level07
        130, 230, 80, 120, 250,
//level08
        200, 170, 250, 100, 380,
//level09
        160, 150, 130, 200, 330
};

//------------------------------------------------------------------------------------------
//сколько длится время, за которое полоска времени полностью уйдет в ноль
//в процентах относительно giSubLevTimes
#define BONUS_TIME_PERCENT              100

//время в миллисекундах, через которое показывается текст и линки в tip_end.men
#define TIP_END_SHOW_ALL_PAUSE  26000

//сорость полета взлетающих очков, пиксели в секунду
#define FLY_POINTS_SPEED                60

//время полета очков в миллисекундах
#define FLY_POINTS_FLY_TIME            1000

//время в миллисекундах, через которое начинается альфа
#define FLY_POINTS_ALPHA_TIME          500

//задержка перед добавлением жизни за кристаллы
#define ADD_LIFE_BY_CRYSTALS_DELAY              1500

//------------------------------------------------------------------------------------------
//ненужная скриптовая переменная. без неё не работает.
static int UnnededVardsfdgfdhfdghlf;
