/// <summary>
 /// Конструктор задания
 /// </summary>
 /// <param name="rect">Прямоугольник для генерации</param>
 /// <param name="sliceWidth">Ширина куска</param>
 /// <param name="sliceHeight">Высота куска</param>
 /// <param name="textureIndex">Индекс текстуры (может быть нужен для быстрого выбора текстуры из списка)</param>
 /// <param name="currentSliceData">Текущее состояние задания</param>
 public GenerateRectInfo(RectInt rect, int sliceWidth, int sliceHeight, int textureIndex, ISliceData currentSliceData)
 {
     Rect             = rect;
     SliceWidth       = sliceWidth;
     SliceHeight      = sliceHeight;
     SliceLenght      = SliceWidth * SliceHeight;
     TextureIndex     = textureIndex;
     SlicesSizeX      = rect.width / SliceWidth;
     SlicesSizeY      = rect.height / SliceHeight;
     CellSizeX        = SliceWidth / SettingsAccess.CellPxSize;
     CellSizeY        = SliceHeight / SettingsAccess.CellPxSize;
     CurrentSliceData = currentSliceData;
 }
Exemple #2
0
        /// <summary>
        /// Заполняет рейтинги данными из задания на генерацию
        /// </summary>
        /// <param name="data">Данные</param>
        /// <param name="index">Текущий индекс</param>
        /// <param name="playerRating">Рейтинг игрока</param>
        /// <returns>Индекс, увеличенный на величину прочитанных данных</returns>
        public int FillRatings(ISliceData data, int index, ushort playerRating)
        {
            for (ushort i = 0; i < SettingsAccess.CellPxLenght; i++)
            {
                var rating = data.GetRating(i + index);

                if (_ratings != null)
                {
                    _ratings[i] = rating;
                }

                if (rating > 0)
                {
                    var ratingDistance = (ushort)Mathf.Abs(rating - playerRating);

                    if (SortedCellItems.IsBelowThanMaxRatingDistance(ratingDistance))
                    {
                        SortedCellItems.AppendCellItemFast(new SortedCellItem(Pos, i, rating, ratingDistance));
                    }
                }
            }

            return(index + SettingsAccess.CellPxLenght);
        }