Class AdjacencyRule
Structure representing a method for determining which coordinates are adjacent to a given coordinate, and which directions those neighbors are in. Cannot be instantiated -- pre-made static instances are provided.
Namespace: SadRogue.Primitives
Assembly: TheSadRogue.Primitives.dll
Syntax
public sealed class AdjacencyRule : ValueType, IEquatable<AdjacencyRule>, IMatchable<AdjacencyRule>
Fields
Cardinals
Represents method of determining adjacency where neighbors are considered adjacent if they are in a cardinal direction, eg. 4-way (manhattan-based) connectivity.
Declaration
public static readonly AdjacencyRule Cardinals
Field Value
Type | Description |
---|---|
AdjacencyRule |
Diagonals
Represents method of determining adjacency where neighbors are considered adjacent only if they are in a diagonal direction.
Declaration
public static readonly AdjacencyRule Diagonals
Field Value
Type | Description |
---|---|
AdjacencyRule |
DirectionsOfNeighborsCache
Array that caches the output of DirectionsOfNeighbors() for this instance. Can be useful since iterating over an array by index is often faster than using a foreach/IEnumerable.
Declaration
public readonly Direction[] DirectionsOfNeighborsCache
Field Value
Type | Description |
---|---|
Direction[] |
Remarks
The indices in this value are not intended to be modified; doing so may result in bad behavior!
DirectionsOfNeighborsClockwiseCache
Array that caches the output of DirectionsOfNeighborsClockwise() for this instance. Can be useful since iterating over an array by index is often faster than using a foreach/IEnumerable.
Declaration
public readonly Direction[] DirectionsOfNeighborsClockwiseCache
Field Value
Type | Description |
---|---|
Direction[] |
Remarks
The indices in this value are not intended to be modified; doing so may result in bad behavior!
DirectionsOfNeighborsCounterClockwiseCache
Array that caches the output of DirectionsOfNeighborsCounterClockwise() for this instance. Can be useful since iterating over an array by index is often faster than using a foreach/IEnumerable.
Declaration
public readonly Direction[] DirectionsOfNeighborsCounterClockwiseCache
Field Value
Type | Description |
---|---|
Direction[] |
Remarks
The indices in this value are not intended to be modified; doing so may result in bad behavior!
EightWay
Represents method of determining adjacency where all 8 possible neighbors are considered adjacent (eg. 8-way connectivity).
Declaration
public static readonly AdjacencyRule EightWay
Field Value
Type | Description |
---|---|
AdjacencyRule |
Type
Enum value representing the method of determining adjacency -- useful for using AdjacencyRule types in switch statements.
Declaration
public readonly AdjacencyRule.Types Type
Field Value
Type | Description |
---|---|
AdjacencyRule.Types |
Methods
DirectionsOfNeighbors()
Gets directions leading to neighboring locations, according to the current adjacency method. Cardinals are returned before any diagonals.
Declaration
public IEnumerable<Direction> DirectionsOfNeighbors()
Returns
Type | Description |
---|---|
IEnumerable<Direction> | Directions that lead to neighboring locations. |
DirectionsOfNeighborsClockwise(Direction)
Gets directions leading to neighboring locations, according to the current adjacency method. Appropriate directions are returned in clockwise order from the given starting direction.
Declaration
public IEnumerable<Direction> DirectionsOfNeighborsClockwise(Direction startingDirection = null)
Parameters
Type | Name | Description |
---|---|---|
Direction | startingDirection | The direction to start with. None causes the default starting direction to be used, which is UP for CARDINALS/EIGHT_WAY, and UP_RIGHT for diagonals. |
Returns
Type | Description |
---|---|
IEnumerable<Direction> | Directions that lead to neighboring locations. |
DirectionsOfNeighborsCounterClockwise(Direction)
Gets directions leading to neighboring locations, according to the current adjacency method. Appropriate directions are returned in counter-clockwise order from the given starting direction.
Declaration
public IEnumerable<Direction> DirectionsOfNeighborsCounterClockwise(Direction startingDirection = null)
Parameters
Type | Name | Description |
---|---|---|
Direction | startingDirection | The direction to start with. null or None causes the default starting direction to be used, which is UP for CARDINALS/EIGHT_WAY, and UP_LEFT for diagonals. |
Returns
Type | Description |
---|---|
IEnumerable<Direction> | Directions that lead to neighboring locations. |
Equals(AdjacencyRule)
True if the given AdjacencyRule has the same Type the current one.
Declaration
public bool Equals(AdjacencyRule other)
Parameters
Type | Name | Description |
---|---|---|
AdjacencyRule | other | AdjacencyRule to compare. |
Returns
Type | Description |
---|---|
Boolean | True if the two directions are the same, false if not. |
Equals(Object)
Same as operator == in this case; returns false if obj
is not an AdjacencyRule.
Declaration
public override bool Equals(object obj)
Parameters
Type | Name | Description |
---|---|---|
Object | obj | The object to compare the current AdjacencyRule to. |
Returns
Type | Description |
---|---|
Boolean | True if |
GetHashCode()
Returns a hash-map value for the current object.
Declaration
public override int GetHashCode()
Returns
Type | Description |
---|---|
Int32 |
Matches(AdjacencyRule)
True if the given AdjacencyRule has the same Type the current one.
Declaration
public bool Matches(AdjacencyRule other)
Parameters
Type | Name | Description |
---|---|---|
AdjacencyRule | other | AdjacencyRule to compare. |
Returns
Type | Description |
---|---|
Boolean | True if the two directions are the same, false if not. |
Neighbors(Point)
Gets all neighbors of the specified location, based on the current adjacency method. Cardinals are returned before any diagonals.
Declaration
public IEnumerable<Point> Neighbors(Point startingLocation)
Parameters
Type | Name | Description |
---|---|---|
Point | startingLocation | Location to return neighbors for. |
Returns
Type | Description |
---|---|
IEnumerable<Point> | All neighbors of the given location. |
Neighbors(Int32, Int32)
Gets all neighbors of the specified location, based on the current adjacency method. Cardinals are returned before any diagonals.
Declaration
public IEnumerable<Point> Neighbors(int startingLocationX, int startingLocationY)
Parameters
Type | Name | Description |
---|---|---|
Int32 | startingLocationX | X-value of the location to return neighbors for. |
Int32 | startingLocationY | Y-value of the location to return neighbors for. |
Returns
Type | Description |
---|---|
IEnumerable<Point> | All neighbors of the given location. |
NeighborsClockwise(Point, Direction)
Gets all neighbors of the specified location, based on the current adjacency method. Neighbors are returned in clockwise order, starting with the neighbor in the given starting direction.
Declaration
public IEnumerable<Point> NeighborsClockwise(Point startingLocation, Direction startingDirection = null)
Parameters
Type | Name | Description |
---|---|---|
Point | startingLocation | Location to return neighbors for. |
Direction | startingDirection | The neighbor in this direction will be returned first, proceeding clockwise. If None is specified, the default starting direction is used, which is Up for CARDINALS/EIGHT_WAY, and UpRight for DIAGONALS. |
Returns
Type | Description |
---|---|
IEnumerable<Point> | All neighbors of the given location. |
NeighborsClockwise(Int32, Int32, Direction)
Gets all neighbors of the specified location, based on the current adjacency method. Neighbors are returned in clockwise order, starting with the neighbor in the given starting direction.
Declaration
public IEnumerable<Point> NeighborsClockwise(int startingLocationX, int startingLocationY, Direction startingDirection = null)
Parameters
Type | Name | Description |
---|---|---|
Int32 | startingLocationX | X-value of the location to return neighbors for. |
Int32 | startingLocationY | Y-value of the location to return neighbors for. |
Direction | startingDirection | The neighbor in this direction will be returned first, proceeding clockwise. If None is specified, the default starting direction is used, which is Up for CARDINALS/EIGHT_WAY, and UpRight for DIAGONALS. |
Returns
Type | Description |
---|---|
IEnumerable<Point> | All neighbors of the given location. |
NeighborsCounterClockwise(Point, Direction)
Gets all neighbors of the specified location, based on the current adjacency method. Neighbors are returned in counter-clockwise order, starting with the neighbor in the given starting direction.
Declaration
public IEnumerable<Point> NeighborsCounterClockwise(Point startingLocation, Direction startingDirection = null)
Parameters
Type | Name | Description |
---|---|---|
Point | startingLocation | Location to return neighbors for. |
Direction | startingDirection | The neighbor in this direction will be returned first, proceeding counter-clockwise. If None is specified, the default starting direction is used, which is Up for CARDINALS/EIGHT_WAY, and UpLeft for DIAGONALS. |
Returns
Type | Description |
---|---|
IEnumerable<Point> | All neighbors of the given location. |
NeighborsCounterClockwise(Int32, Int32, Direction)
Gets all neighbors of the specified location, based on the current adjacency method. Neighbors are returned in counter-clockwise order, starting with the neighbor in the given starting direction.
Declaration
public IEnumerable<Point> NeighborsCounterClockwise(int startingLocationX, int startingLocationY, Direction startingDirection = null)
Parameters
Type | Name | Description |
---|---|---|
Int32 | startingLocationX | X-value of the location to return neighbors for. |
Int32 | startingLocationY | Y-value of the location to return neighbors for. |
Direction | startingDirection | The neighbor in this direction will be returned first, proceeding counter-clockwise. If None is specified, the default starting direction is used, which is Up for CARDINALS/EIGHT_WAY, and UpLeft for DIAGONALS. |
Returns
Type | Description |
---|---|
IEnumerable<Point> | All neighbors of the given location. |
ToString()
Returns a string representation of the AdjacencyRule.
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
String | A string representation of the AdjacencyRule. |
Operators
Equality(AdjacencyRule, AdjacencyRule)
True if the two adjacency rules have the same Type.
Declaration
public static bool operator ==(AdjacencyRule lhs, AdjacencyRule rhs)
Parameters
Type | Name | Description |
---|---|---|
AdjacencyRule | lhs | |
AdjacencyRule | rhs |
Returns
Type | Description |
---|---|
Boolean | True if the two adjacency rules are equal, false if not. |
Implicit(AdjacencyRule to AdjacencyRule.Types)
Implicitly converts an AdjacencyRule to its corresponding Type.
Declaration
public static implicit operator AdjacencyRule.Types(AdjacencyRule rule)
Parameters
Type | Name | Description |
---|---|---|
AdjacencyRule | rule |
Returns
Type | Description |
---|---|
AdjacencyRule.Types |
Implicit(AdjacencyRule.Types to AdjacencyRule)
Implicitly converts an AdjacencyRule.Types enum value to its corresponding AdjacencyRule.
Declaration
public static implicit operator AdjacencyRule(AdjacencyRule.Types type)
Parameters
Type | Name | Description |
---|---|---|
AdjacencyRule.Types | type |
Returns
Type | Description |
---|---|
AdjacencyRule |
Inequality(AdjacencyRule, AdjacencyRule)
True if the types are not equal.
Declaration
public static bool operator !=(AdjacencyRule lhs, AdjacencyRule rhs)
Parameters
Type | Name | Description |
---|---|---|
AdjacencyRule | lhs | |
AdjacencyRule | rhs |
Returns
Type | Description |
---|---|
Boolean | True if the types are not equal, false if they are both equal. |