#define  UTIL_BONUSTABLE_H aaa
//----------------------------------------------------------------------------
//  @brief
//        обработка таблицы обязательного выпадения бонусов
//        

//  @ingroup
    
//  2006Oct19 created. Zmanovsky Peter.
//  (C) 2006    Sigma-Team
//-----------------------------------------------------------------------------

//------------------------------------------------------------------------------------------
//пустая дефолтовая таблица
#ifndef BONUS_TABLE
int BONUS_TABLE[20] =    //пулемет   ракетн.   взрыв. проник.
                         {     0,      0,      0,      0,
                               0,      0,      0,      0,
                               0,      0,      0,      0,
                               0,      0,      0,      0,
                               0,      0,      0,      0
                          };
#endif

//------------------------------------------------------------------------------------------
//список vid`ов для бонусов из таблицы BONUS_TABLE
int ITEMVID_FROM_TABLENUM[4] =    //пулемет   ракетн.   взрыв. проник.
                                  {     112,     117,     114,   106 };

//------------------------------------------------------------------------------------------
CanBornBonus(int i)
{
	if((i < 0)||(i > 3))
		return false;
	//
	if((i == 0) && VehiHaveGun)
		return false;
	if((i == 1) && VehiHaveMissile)
		return false;
	if((i == 2) && GetVidData(504, VID_COUNT))
		return false;
	if((i == 3) && GetVidData(502, VID_COUNT))
		return false;
	//
	return true;
}


//------------------------------------------------------------------------------------------
CheckBonuses(int unit)
{
	if(giSubLevelNum < 0 || giSubLevelNum >= 5)
		return;
	int i;

	//условия невыпадения новых простых бонусов (те, у которых 1 стоит)
	bool bNoSimpNonus;
	bNoSimpNonus = false;

	//не выпадаем если уже есть пулемет или ракетница или если уже есть крутые шарики
	for(i = 0; i < 4; i++)
	{
		if(!CanBornBonus(i))
			bNoSimpNonus = true;
	}
	//не выпадаем если уже летит три и более крутых бонуса
	int cnt; cnt = 0;
	for(i = 0; i < 4; i++)
	{
		cnt = cnt + GetVidData(ITEMVID_FROM_TABLENUM[i],VID_COUNT);
		//Log2("qaa = " + itoa(GetVidData(ITEMVID_FROM_TABLENUM[i],VID_COUNT)));
	}
	if(cnt >=3)
		bNoSimpNonus = true;
	//Log2("bNoSimpNonus = " + itoa(bNoSimpNonus));

	//
	int n;
	bool bDeleted; bDeleted = false;
	for(i = 0; i < 4; i++)
	{
		n = BONUS_TABLE[giSubLevelNum*4+i];
		if( ((n == 2) && CanBornBonus(i)) || ((n == 1) && !bNoSimpNonus))
		{
			if(!bDeleted)
			{
				bDeleted = true;
				Action(unit, ACT_DELETE_ALL_ITEM);
			}
			Action(unit, ACT_ADD_ITEM, ITEMVID_FROM_TABLENUM[i]);
		}
	}
}
