Enum Class Radius

java.lang.Object
java.lang.Enum<Radius>
com.github.yellowstonegames.grid.Radius
All Implemented Interfaces:
Serializable, Comparable<Radius>, Constable

public enum Radius extends Enum<Radius>
Basic radius strategy implementations likely to be used for roguelikes.
  • Nested Class Summary

    Nested classes/interfaces inherited from class Enum

    Enum.EnumDesc<E>
  • Enum Constant Summary

    Enum Constants
    Enum Constant
    Description
    In an unobstructed area the FOV would be a circle.
    In an unobstructed area the FOV would be a diamond.
    In an unobstructed area the FOV would be a square.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final Radius[]
    The cached result of values(), so you can avoid repeatedly allocating Radius[] objects.
  • Method Summary

    Modifier and Type
    Method
    Description
    float
    area(float radiusLength)
     
    expand(int distance, int width, int height, Iterable<Coord> points)
    Given an Iterable of Coord (such as a List or Set), a distance to expand outward by (using this Radius), and the bounding height and width of the map, gets a "thickened" group of Coord as a Set where each Coord in points has been expanded out by an amount no greater than distance.
    extend(Coord center, Coord middle, int radiusLength, boolean surpassEdges, int width, int height)
     
    static List<Coord>
    inCircle(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height)
    Gets a List of all Coord points within radiusLength of center using Euclidean measurement (making a circle).
    static List<Coord>
    inCircle(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height, List<Coord> buf)
    Gets a List of all Coord points within radiusLength of center using Euclidean measurement (making a circle).
    static List<Coord>
    inDiamond(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height)
    Gets a List of all Coord points within radiusLength of center using Manhattan measurement (making a diamond).
    static List<Coord>
    inDiamond(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height, List<Coord> buf)
    Gets a List of all Coord points within radiusLength of center using Manhattan measurement (making a diamond).
    boolean
    inRange(int startx, int starty, int endx, int endy, int minRange, int maxRange)
     
    static List<Coord>
    inSquare(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height)
    Gets a List of all Coord points within radiusLength of center using Chebyshev measurement (making a square).
    static List<Coord>
    inSquare(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height, List<Coord> buf)
    Gets a List of all Coord points within radiusLength of center using Chebyshev measurement (making a square).
    Gets the appropriate Measurement to pass to a constructor if you already have a Radius.
    onUnitShape(float distance, com.github.tommyettinger.random.EnhancedRandom rng)
     
    perimeter(Coord center, int radiusLength, boolean surpassEdges, int width, int height)
     
    pointsInside(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height)
     
    pointsInside(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height, List<Coord> buf)
     
    pointsInside(Coord center, int radiusLength, boolean surpassEdges, int width, int height)
     
    float
    radius(float dx, float dy)
     
    float
    radius(float startx, float starty, float endx, float endy)
     
    float
     
    float
    radius(Coord start, Coord end)
     
    int
    roughDistance(int xPos, int yPos)
     
    static Radius
    Returns the enum constant of this class with the specified name.
    static Radius[]
    Returns an array containing the constants of this enum class, in the order they are declared.

    Methods inherited from class Object

    getClass, notify, notifyAll, wait, wait, wait
  • Enum Constant Details

    • SQUARE

      public static final Radius SQUARE
      In an unobstructed area the FOV would be a square.
      This is the shape that would represent movement radius in an 8-way movement scheme with no additional cost for diagonal movement.
    • DIAMOND

      public static final Radius DIAMOND
      In an unobstructed area the FOV would be a diamond.
      This is the shape that would represent movement radius in a 4-way movement scheme.
    • CIRCLE

      public static final Radius CIRCLE
      In an unobstructed area the FOV would be a circle.
      This is the shape that would represent movement radius in an 8-way movement scheme with all movement cost the same based on distance from the source
  • Field Details

    • ALL

      public static final Radius[] ALL
      The cached result of values(), so you can avoid repeatedly allocating Radius[] objects. DO NOT MODIFY THIS ARRAY.
  • Method Details

    • values

      public static Radius[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static Radius valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • radius

      public float radius(Coord start, Coord end)
    • radius

      public float radius(Coord end)
    • radius

      public float radius(float startx, float starty, float endx, float endy)
    • radius

      public float radius(float dx, float dy)
    • onUnitShape

      public Coord onUnitShape(float distance, com.github.tommyettinger.random.EnhancedRandom rng)
    • area

      public float area(float radiusLength)
    • perimeter

      public CoordOrderedSet perimeter(Coord center, int radiusLength, boolean surpassEdges, int width, int height)
    • extend

      public Coord extend(Coord center, Coord middle, int radiusLength, boolean surpassEdges, int width, int height)
    • inRange

      public boolean inRange(int startx, int starty, int endx, int endy, int minRange, int maxRange)
    • roughDistance

      public int roughDistance(int xPos, int yPos)
    • pointsInside

      public List<Coord> pointsInside(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height)
    • pointsInside

      public List<Coord> pointsInside(Coord center, int radiusLength, boolean surpassEdges, int width, int height)
    • pointsInside

      public List<Coord> pointsInside(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height, List<Coord> buf)
    • inSquare

      public static List<Coord> inSquare(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height)
      Gets a List of all Coord points within radiusLength of center using Chebyshev measurement (making a square). Appends Coords to buf if it is non-null, and returns either buf or a freshly-allocated List of Coord. If surpassEdges is false, which is the normal usage, this will not produce Coords with x or y less than 0 or greater than width or height; if surpassEdges is true, then it can produce any Coords in the actual radius.
      Parameters:
      centerX - the center Coord x
      centerY - the center Coord x
      radiusLength - the inclusive distance from (centerX,centerY) for Coords to use in the List
      surpassEdges - usually should be false; if true, can produce Coords with negative x/y or past width/height
      width - the width of the area this can place Coords (exclusive, not relative to center, usually map width)
      height - the height of the area this can place Coords (exclusive, not relative to center, usually map height)
      Returns:
      a new List containing the points within radiusLength of the center
    • inDiamond

      public static List<Coord> inDiamond(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height)
      Gets a List of all Coord points within radiusLength of center using Manhattan measurement (making a diamond). Appends Coords to buf if it is non-null, and returns either buf or a freshly-allocated List of Coord. If surpassEdges is false, which is the normal usage, this will not produce Coords with x or y less than 0 or greater than width or height; if surpassEdges is true, then it can produce any Coords in the actual radius.
      Parameters:
      centerX - the center Coord x
      centerY - the center Coord x
      radiusLength - the inclusive distance from (centerX,centerY) for Coords to use in the List
      surpassEdges - usually should be false; if true, can produce Coords with negative x/y or past width/height
      width - the width of the area this can place Coords (exclusive, not relative to center, usually map width)
      height - the height of the area this can place Coords (exclusive, not relative to center, usually map height)
      Returns:
      a new List containing the points within radiusLength of the center
    • inCircle

      public static List<Coord> inCircle(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height)
      Gets a List of all Coord points within radiusLength of center using Euclidean measurement (making a circle). Appends Coords to buf if it is non-null, and returns either buf or a freshly-allocated List of Coord. If surpassEdges is false, which is the normal usage, this will not produce Coords with x or y less than 0 or greater than width or height; if surpassEdges is true, then it can produce any Coords in the actual radius.
      Parameters:
      centerX - the center Coord x
      centerY - the center Coord x
      radiusLength - the inclusive distance from (centerX,centerY) for Coords to use in the List
      surpassEdges - usually should be false; if true, can produce Coords with negative x/y or past width/height
      width - the width of the area this can place Coords (exclusive, not relative to center, usually map width)
      height - the height of the area this can place Coords (exclusive, not relative to center, usually map height)
      Returns:
      a new List containing the points within radiusLength of the center
    • inSquare

      public static List<Coord> inSquare(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height, List<Coord> buf)
      Gets a List of all Coord points within radiusLength of center using Chebyshev measurement (making a square). Appends Coords to buf if it is non-null, and returns either buf or a freshly-allocated List of Coord. If surpassEdges is false, which is the normal usage, this will not produce Coords with x or y less than 0 or greater than width or height; if surpassEdges is true, then it can produce any Coords in the actual radius.
      Parameters:
      centerX - the center Coord x
      centerY - the center Coord x
      radiusLength - the inclusive distance from (centerX,centerY) for Coords to use in the List
      surpassEdges - usually should be false; if true, can produce Coords with negative x/y or past width/height
      width - the width of the area this can place Coords (exclusive, not relative to center, usually map width)
      height - the height of the area this can place Coords (exclusive, not relative to center, usually map height)
      buf - the List of Coord to append points to; may be null to create a new List
      Returns:
      buf, after appending Coords to it, or a new List if buf was null
    • inDiamond

      public static List<Coord> inDiamond(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height, List<Coord> buf)
      Gets a List of all Coord points within radiusLength of center using Manhattan measurement (making a diamond). Appends Coords to buf if it is non-null, and returns either buf or a freshly-allocated List of Coord. If surpassEdges is false, which is the normal usage, this will not produce Coords with x or y less than 0 or greater than width or height; if surpassEdges is true, then it can produce any Coords in the actual radius.
      Parameters:
      centerX - the center Coord x
      centerY - the center Coord x
      radiusLength - the inclusive distance from (centerX,centerY) for Coords to use in the List
      surpassEdges - usually should be false; if true, can produce Coords with negative x/y or past width/height
      width - the width of the area this can place Coords (exclusive, not relative to center, usually map width)
      height - the height of the area this can place Coords (exclusive, not relative to center, usually map height)
      buf - the List of Coord to append points to; may be null to create a new List
      Returns:
      buf, after appending Coords to it, or a new List if buf was null
    • inCircle

      public static List<Coord> inCircle(int centerX, int centerY, int radiusLength, boolean surpassEdges, int width, int height, List<Coord> buf)
      Gets a List of all Coord points within radiusLength of center using Euclidean measurement (making a circle). Appends Coords to buf if it is non-null, and returns either buf or a freshly-allocated List of Coord. If surpassEdges is false, which is the normal usage, this will not produce Coords with x or y less than 0 or greater than width or height; if surpassEdges is true, then it can produce any Coords in the actual radius.
      Parameters:
      centerX - the center Coord x
      centerY - the center Coord x
      radiusLength - the inclusive distance from (centerX,centerY) for Coords to use in the List
      surpassEdges - usually should be false; if true, can produce Coords with negative x/y or past width/height
      width - the width of the area this can place Coords (exclusive, not relative to center, usually map width)
      height - the height of the area this can place Coords (exclusive, not relative to center, usually map height)
      buf - the List of Coord to append points to; may be null to create a new List
      Returns:
      buf, after appending Coords to it, or a new List if buf was null
    • expand

      public CoordOrderedSet expand(int distance, int width, int height, Iterable<Coord> points)
      Given an Iterable of Coord (such as a List or Set), a distance to expand outward by (using this Radius), and the bounding height and width of the map, gets a "thickened" group of Coord as a Set where each Coord in points has been expanded out by an amount no greater than distance. As an example, you could call this on a line generated by Bresenham, OrthoLine, or an LOS object's getLastPath() method, and expand the line into a thick "brush stroke" where this Radius affects the shape of the ends. This will never produce a Coord with negative x or y, a Coord with x greater than or equal to width, or a Coord with y greater than or equal to height.
      Parameters:
      distance - the distance, as measured by this Radius, to expand each Coord on points up to
      width - the bounding width of the map (exclusive)
      height - the bounding height of the map (exclusive)
      points - an Iterable (such as a List or Set) of Coord that this will make a "thickened" version of
      Returns:
      a Set of Coord that covers a wider area than what points covers; each Coord will be unique (it's a Set)
    • matchingMeasurement

      public Measurement matchingMeasurement()
      Gets the appropriate Measurement to pass to a constructor if you already have a Radius. Matches SQUARE to CHEBYSHEV, DIAMOND to MANHATTAN, and CIRCLE to EUCLIDEAN.
      Returns:
      a Measurement that matches this; SQUARE to CHEBYSHEV, DIAMOND to MANHATTAN, etc.
      See Also: