Example #1
0
 public void WritePlayerInfoAction(InfoAction value)
 {
     value.Write(this);
 }
Example #2
0
 public void Info(string message)
 {
     InfoAction?.Invoke(message);
 }
Example #3
0
        /// <summary>
        ///   Выполняет функцию на группой элементов из коллекции, а не сразу над всеми
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="list">Список элементов</param>
        /// <param name="bunchSize">Размер bunch</param>
        /// <param name="bunchAction">Действие, выполняемое над каждым bunch</param>
        /// <param name="beforeBunchAction">Позволяет получить текущий индекс bunch и общее количество bunch-ей</param>
        /// <param name="afterBunchAction">Выполняется после каждого bunch</param>
        /// <returns>ICollection<typeparamref name="T" /></returns>
        public static ICollection <T> SelectByBunch <T>(this IList <T> list, int bunchSize, Action <T> bunchAction, InfoAction beforeBunchAction, Action afterBunchAction)
        {
            if (bunchSize <= 0)
            {
                throw new ArgumentException("Bunch size has to be positive");
            }
            var count = (int)Math.Ceiling((double)list.Count / bunchSize);

            for (var i = 0; i < count; i++)
            {
                beforeBunchAction(i, count);
                var shortestSize = (i + 1) * bunchSize < list.Count ? (i + 1) * bunchSize : list.Count;
                for (var j = i * bunchSize; j < shortestSize; j++)
                {
                    bunchAction(list[j]);
                }

                afterBunchAction();
            }
            return(list);
        }