/// <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> private void SetPosition() { var playerPos = SettingsAccess.ConvertToWorldPosition(_currentCellItemPosition, _zoom.GetZoomPrecision()); if (_zoom.IsCellsView()) { _tr.position = SettingsAccess.ConvertToWorldPosition(_currentCellPosition + Vector2Int.one * SettingsAccess.HalfCellPxSize, _zoom.GetZoomPrecision()); } else { _tr.position = playerPos; } _player.SetPosition(playerPos); }