Example #1
0
        public Hex GetHexInDirectionOf(Hex from, Hex to)
        {
            HexCoords closetCoords = null;
            var       minDistance  = 99;

            foreach (var direction in HexCoords.directions)
            {
                var dirCoords = from.coords + direction;
                if (IsHexEmpty(dirCoords) && !IsHexLocked(dirCoords))
                {
                    var newDistance = HexCoords.Distance(dirCoords, to.coords);
                    if (newDistance < minDistance)
                    {
                        minDistance  = newDistance;
                        closetCoords = dirCoords;
                    }
                }
            }
            if (!(closetCoords is null))
            {
                var offsetCoords = closetCoords.ToOffset();
                return(grid[offsetCoords.y, offsetCoords.x]);
            }
            return(null);
        }
Example #2
0
        public bool IsHexLocked(HexCoords coords)
        {
            var offset = coords.ToOffset();

            if (!Contains(coords))
            {
                return(false);
            }

            return(grid[offset.y, offset.x].locked);
        }
Example #3
0
        public Entity GetUnit(HexCoords coords)
        {
            var offset = coords.ToOffset();

            if (!Contains(coords))
            {
                return(null);
            }

            return(grid[offset.y, offset.x].unit);
        }
Example #4
0
 private void InitializeGrid(int height, int width)
 {
     grid = new Hex[height, width];
     for (int r = 0; r < height; r++)
     {
         int r_offset = (int)MathF.Floor(r / 2);
         for (int q = -r_offset; q < width - r_offset; q++)
         {
             var axialCoords  = new HexCoords(q, r);
             var offsetCoords = axialCoords.ToOffset();
             var hex          = new Hex(axialCoords);
             grid[offsetCoords.y, offsetCoords.x] = hex;
         }
     }
 }
Example #5
0
        public bool Contains(Entity entity, HexCoords coords)
        {
            var offset = coords.ToOffset();

            if (!Contains(coords))
            {
                return(false);
            }

            if (grid[offset.y, offset.x].unit == entity)
            {
                return(true);
            }
            return(false);
        }
Example #6
0
        public void AddUnit(Entity entity, HexCoords coords)
        {
            var offset = coords.ToOffset();

            if (!Contains(coords))
            {
                return;
            }

            if (!IsHexEmpty(coords))
            {
                return;
            }

            grid[offset.y, offset.x].unit = entity;
        }
Example #7
0
        public bool IsHexEmpty(HexCoords coords)
        {
            var offset = coords.ToOffset();

            if (!Contains(coords))
            {
                return(false);
            }

            if (grid[offset.y, offset.x].unit is null)
            {
                return(true);
            }

            return(false);
        }
Example #8
0
        public Entity RemoveUnit(HexCoords coords)
        {
            var offset = coords.ToOffset();

            if (!Contains(coords))
            {
                return(null);
            }

            var entity = grid[offset.y, offset.x].unit;

            if (!(entity is null))
            {
                grid[offset.y, offset.x].unit = null;
            }
            return(entity);
        }