Exemplo n.º 1
0
        /// <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);
                }
            }
        }
Exemplo n.º 2
0
        /// <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;
        }
Exemplo n.º 3
0
        /// <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);
        }