/// <summary> /// Отобразить планеты, входящие в прямоугольник /// </summary> /// <param name="rect">Прямоугольник в который входят планеты, которые требуется создать</param> private void FillPlanets(RectInt rect) { var iterator = rect.allPositionsWithin; CellInfo cell = null; while (iterator.MoveNext()) { var worldPos = iterator.Current; var cellPos = SettingsAccess.GetCellBeginPosition(worldPos); if (cell == null || cell.Pos != cellPos) { cell = _cells.GetCell(cellPos); } var cellItemPos = cell.GetCellItemPosition(worldPos); var rating = cell.GetRating(cellItemPos); if (rating > 0) { var posId = SettingsAccess.GetId(worldPos); var planet = _planets.Create(posId); planet.Show(worldPos, SettingsAccess.ConvertToWorldPosition(worldPos), rating); } } }
/// <summary> /// Создать планеты из списка /// </summary> /// <param name="cellItems">Список планет для создания</param> private void FillAdvancedVisiblePlanets(SortedCellItem[] cellItems) { _planets.DestroyAll(); var precision = _zoom.GetZoomPrecision(); for (int i = 0; i < cellItems.Length; i++) { var cellItem = cellItems[i]; var cell = _cells.GetCell(cellItem.CellPos); var worldPos = cell.GetWordPosition(cellItem.Index); var posId = SettingsAccess.GetId(worldPos); var planet = _planets.Create(posId); planet.Show(worldPos, SettingsAccess.ConvertToWorldPosition(worldPos, precision), cellItem.Rating); } SetPosition(); _prevRect = null; }
/// <summary> /// Очистить прямоугольник от планет /// </summary> /// <param name="rect">Прямоугольник который требуется очистить от планет</param> private void ClearPlanets(RectInt rect) { var iterator = rect.allPositionsWithin; while (iterator.MoveNext()) { var posId = SettingsAccess.GetId(iterator.Current); var planet = _planets.GetByIdOrNull(posId); if (planet != null) { planet.Destroy(); } } }
/// <summary> /// Уникальный индентификатор элемента пулинга /// </summary> /// <returns>Идентификатор</returns> public override int GetId() { return(SettingsAccess.GetId(_cellItemPosition)); }