Сообщений: 538
Тем: 76
Зарегистрирован: Aug 2012
Репутация:
7
Как сделать так чтобы пакет отсылал всю информацию но частями например по 800 байт
В данный момент сделано так PROTOCOL_BASE_MAP_MATCHINGLIST_PART_1, PROTOCOL_BASE_MAP_MATCHINGLIST_PART_2, PROTOCOL_BASE_MAP_MATCHINGLIST_PART_3
С магазином тоже самое , а нужно чтобы из всего списка отсылал определенное количество и не всегда одинаковое количество.
Подскажите где искать подобное.
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
На оффе по 100 элементов отправляет в PROTOCOL_BASE_MAP_MATCHINGLIST_ACK.
[SRC="csharp"]public static class ListExtensions
{
public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int limit)
{
return list.Select((item, inx) => new { item, inx })
.GroupBy(x => x.inx / limit)
.Select(g => g.Select(x => x.item));
}
}
[/SRC]
[SRC="csharp"]var parts = maps.Split(100);
foreach (var part in parts)
{
var list = part.ToList();
Response(new PROTOCOL_BASE_MAP_MATCHINGLIST_ACK(list));
}
[/SRC]
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Связки режимов и карт. Данные у тебя есть, разбери их для начала.
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
у тебя есть список режимов, его разбиваешь на списки по 100 элементов.
Отправляй части. В самом пакете, как видно из сниффа:
[SRC="csharp"]// short
// byte - количество режимов для текущей части
foreach (var mode in modes)
{
// ...
}
// int - если это последняя часть, то 1, иначе 0.
// short - сколько режимов было отправлено
// short - общее количество режимов
[/SRC]