cms_mapmanager.inc

#if defined _cmsmm_included
	#endinput
#endif
#define _cmsmm_included

#if defined _map_manager_core_included
	#define mapm_vote_started OnCMSMMVoteStarted
	#define mapm_vote_finished OnCMSMMVoteFinished
#endif

/*Границы лимитов карт для фильтрации по количеству игроков*/
enum _:eMapBounds
{
	bmin,
	bmax
}



/*Данные карты*/
enum _:eMapData
{
	mapFullName[MAX_NAME_LENGTH*2],	/*Полное название карты*/
	mapPrefix[MAX_NAME_LENGTH/3],	/*Префикс карты*/
	mapName[MAX_NAME_LENGTH],		/*Короткое название карты*/
	mapPlayersBounds[eMapBounds],	/*Границы карты eMapBounds*/
	mStatus:mapStatus				/*Статус карты mapStatus*/
}


/*Статус голосования*/
enum _:eVoteStatus
{
	voteByRTV = -2,		/*Голосование по RTV*/
	voteNone,			/*Голосования нет*/
	voteByServer,		/*Голосование сервером*/
	voteRandomMap,		/*Голосование с выбором случайной карты*/
	voteDefaultMap		/*Голосование с выбором дефолтной карты*/
}

/*Статус карты*/
enum _:mapStatus (<<=1)
{
	mapStatusLast = 1,			/*Недавно сыгранная*/
	mapStatusBlocked,			/*Заблокирована*/
	mapStatusBlockedForNoms,	/*Заблокирована для номинации*/
	mapStatusInNoms,			/*Номинирована*/
	mapStatusCurrent,			/*Текущая*/
	mapStatusVoteByAdmin		/*Выставлена наголосование админом*/
}

/*Источник карт*/
enum eMapSource
{
	mapSourceDisable,	/*Источник не определен*/
	mapSourceFile,		/*Список карт из файла ini*/
	mapSourceDir		/*Список карт из директории maps*/
}

/*Лимит карты*/
enum eMapLimit
{
	mapLimitTime = 0,	/*Лимит по mp_timelimit*/
	mapLimitFrags,		/*Лимит по mp_fraglimit*/
	mapLimitWins,		/*Лимит по mp_winlimit*/
	mapLimitRounds		/*Лимит по mp_maxrounds*/
}

/*Forwards Handle Types*/
enum _:MFHandle_Type 
{	
	fwdMapStart = 1,	/*При старте карты*/
	fwdMapNominated,	/*При номинции карты*/
	fwdVoteTimer,		/*При отсчете таймера голосования*/
	fwdVoteStarted,		/*При начале голосования*/	
	fwdVoteEnded		/*При окончании голосования*/
};

/**
*	Установить источник карт для меню игроков
*	@param MapSource	Идентификатор массива из которого будет формироваться меню
*
*	@return		Идентификатор массива Array из которого будет формироваться меню
*
*	@note		Если идентификаторы совпадают, то источник успешно установлен
*				Если MapSource = Invalid_Array, будет установлен источник в соответствии с кваром "gmm_mapsource"
*				При смене источника все номинированные карты из номинации убираются
*/
native Array:CmsmmSetMapmenuSource(Array:MapSource = Invalid_Array);


/**
*	Добавить карту в меню
*
*	@param MapSource	Идентификатор массива из которого будет формироваться меню
*	@szMapName			Название карты
*
*	@return				1 - при удачном добавлении карты
*						0 - если карта не существует на сервере
*/
native CmsmmAddMapToMaplist(Array:MapSource, szMapName[]);


/**
*	Выполняется после загрузки всех конфигов карт и установки всех параметров работы плагина
*
*	@param szMapName	Название карты
*
*	@noreturn
*	@note		Выполняется примерно через 7 секунд с момента смены карты
*/
forward OnCMSMMStartMap(szMapName[]);

/**
*	Выполняется после номинирования карты игроком
*
*	@param iClient		Индекс игрока
*	@param szMapName		Название карты
*
*	@noreturn
*/
forward OnCMSMMNominateMap(iClient, szMapName[]);

/**
*	Выполняется после начала голосования
*
*	@iStatus		- тип голосования из eVoteStatus
*	@noreturn
*/
forward OnCMSMMVoteStarted(iStatus);

/**
*	Выполняется после окончания голосовании
*
*	@param szMapName	Название следующей выбранной карты, если голосование состоялось
*	@param iStatus		Тип голосования из eVoteStatus
*	@param iTotalVotes	Количество голосовавших, если голосование состоялось
*
*	@noreturn
*/
forward OnCMSMMVoteFinished(const szMapName[], iStatus, iTotalVotes);