Пример #1
0
        public void OnDrag(PointerEventData eventData)
        {
            if (!Active)
            {
                return;
            }

            MapGridPosition closestPosition = GetClosestMouseGridPosition(eventData);

            Building.SetAdjustedPosition(closestPosition.WorldPosition);
        }
Пример #2
0
    public MapGridPosition MinGrid()
    {
        MapGridPosition min = null;

        foreach (var grid in GridPositions)
        {
            if (min == null || GridValue(grid) <= GridValue(min))
            {
                min = grid;
            }
        }
        return(min);
    }
Пример #3
0
        private bool TryGetMouseGridPosition(out MapGridPosition result)
        {
            Ray ray = _mainCamera.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out RaycastHit hitInfo, _mainCamera.farClipPlane, _floorMask))
            {
                Vector3 mousePosition = hitInfo.point;
                result = Building.Map.GetClosestGridPosition(mousePosition);
                return(true);
            }

            result = default;
            return(false);
        }
Пример #4
0
        public void OnEndDrag(PointerEventData eventData)
        {
            if (!Active)
            {
                return;
            }

            MapGridPosition closestPosition = GetClosestMouseGridPosition(eventData);
            Vector2Int      gridPosition    = closestPosition.GridPosition;

            Building.Map.Grid.RemoveFromGrid(Building.CurrentPosition, Building.Size);
            if (Building.Map.Grid.IsSlotAvailable(gridPosition, Building.Size))
            {
                Building.SetMapGridPosition(closestPosition);
            }
            else
            {
                Building.Map.Grid.InsertIntoGrid(Building.CurrentPosition, Building.Size);
                transform.position = _startingPosition;
            }
        }
Пример #5
0
 public void SetMapGridPosition(MapGridPosition position)
 {
     CurrentPosition = position.GridPosition;
     SetAdjustedPosition(position.WorldPosition);
     Map.Grid.InsertIntoGrid(position.GridPosition, Size);
 }
Пример #6
0
 private float GridValue(MapGridPosition grid)
 {
     return(grid.MapPosition.x + grid.MapPosition.y);
 }