PDA

Просмотр полной версии : [Include] TextList - система списков на Text Draw



ziggi
04.09.2016, 16:41
TextList
GitHub (https://github.com/Open-GTO/textlist)

Описание
Система списков на Text Draw.

Скриншоты
На скриншотах изображена реально работающая система тюнинга, выполенная с использованием данной библиотеки. Посмотреть её код можно здесь (https://github.com/Open-GTO/Open-GTO/blob/master/sources/services/tuning.pwn), но учтите, что данная реализация частично привязана к различным системам режима Open-GTO.
http://ihost.pro-pawn.ru/image.php?di=AXYC http://ihost.pro-pawn.ru/image.php?di=45NX

Функции
Показать созданный TextList

TextList_Show(playerid, function[]);

Открыть TextList

TextList_Open(playerid, function[], list_items[][], list_size = sizeof(list_items), header[] = "",
button1[] = "", button2[] = "", Float:pos_x = 89.0, Float:pos_y = 140.0,
select_color = 0xFFA500FF,
lists_bg_color[TEXTLIST_MAX_ITEMS] = {0x212121A0, ...},
lists_fg_color[TEXTLIST_MAX_ITEMS] = {0xFFFFFFFF, ...},
header_bg_color = 0xB71C1CAA, header_fg_color = 0xFFFFFFFF,
paginator_bg_color = 0x21212160, paginator_fg_color = 0xFFFFFFFF,
button1_bg_color = 0x6D4C41AA, button1_fg_color = 0xFFFFFFFF,
button2_bg_color = 0x6D4C41AA, button2_fg_color = 0xFFFFFFFF);

Закрыть TextList

TextList_Close(playerid);

Статус TextList

TextList_IsOpen(playerid);


Автовызываемые функции
Для каждого TextList оформляется собственная функция-обработчик, выглядит она следующим образом:

TextListResponse:example_tl(playerid, TextListType:response, itemid, itemvalue[])
{
return 1;
}

Эта функция вызывается при любом взаимодействии пользователя с TextList.

TextListType может принимать следующие значения:

TextList_None
TextList_Button1
TextList_Button2
TextList_ListItem
TextList_ListUp
TextList_ListDown
TextList_Cancel


Константы
Доступно несколько констант, некоторые из них можно переназначить.


Константа
Значение по умолчанию
Можно переназначить?


TEXTLIST_MAX_ITEMS
30
Да


TEXTLIST_MAX_ITEMS_ON_LIST
10
Да


TEXTLIST_MAX_ITEM_NAME
32
Нет


TEXTLIST_MAX_FUNCTION_NAME
31
Нет


TEXTLIST_MAX_BUTTON_NAME
12
Нет



Использование
Для более удобного использования, в системе предусмотрена возможность создавать функцию для открытия TextList, это полезно при множественном вызове одного списка (в основном используется при создании вложенных меню):

TextListCreate:example_tl(playerid)
{
new items[][TEXTLIST_MAX_ITEM_NAME] = {
"Test 1",
"Big Test 2"
};

new bg_colors[TEXTLIST_MAX_ITEMS] = {
0xFF0000FF,
0x00FF00FF
};

TextList_Open(playerid, TextList:example_tl, items, sizeof(items),
"Example header",
"Button 1", "Button 2",
.lists_bg_color = bg_colors);
}

TextListResponse:example_tl(playerid, TextListType:response, itemid, itemvalue[])
{
new string[128];
format(string, sizeof(string), " %d | %d | %d | %s", playerid, _:response, itemid, itemvalue);
SendClientMessage(playerid, -1, string);
return 1;
}

И где-то вы можете открыть созданный TextList:

TextList_Show(playerid, TextList:example_tl);

Естественно вас никто не заставляет пользоваться этой системой, вы можете обойтись без TextListCreate.

Скачать

Последнюю версию вы всегда можете найти на странице релизов GitHub (https://github.com/Open-GTO/textlist/releases).