Table of Contents

Method AggregateNeighborhood

Namespace
Gamelogic.Grids2
Assembly
Gamelogic.Grids2.dll

AggregateNeighborhood<TPoint, TResultCell>(IGrid<TPoint>, Func<TPoint, IEnumerable<TPoint>>, Func<IEnumerable<TPoint>, TResultCell>)

Creates a new grid where the neighbors of a point are aggregated to the grid changing the type of the points.

public static IGrid<TPoint, TResultCell> AggregateNeighborhood<TPoint, TResultCell>(IGrid<TPoint> grid, Func<TPoint, IEnumerable<TPoint>> getNeighborHood, Func<IEnumerable<TPoint>, TResultCell> aggregator)

Parameters

grid IGrid<TPoint>

Grid in which the operations are performed.

getNeighborHood Func<TPoint, IEnumerable<TPoint>>

This function is used to get all the neighborhood of a given point.

aggregator Func<IEnumerable<TPoint>, TResultCell>

This function is used to aggregate a list of point into a grid.

Returns

IGrid<TPoint, TResultCell>

Type Parameters

TPoint

The type of the points of the grid.

TResultCell

The type of the points of the resulting grid.

Examples

Suppose we have a grid with a count of enemies in each cell, and we want a grid that has in each cell, the sum of the enemies in neighboring cells. We can use the following to do that:

var closeEnemyCount = AggregateNeighborhood(
	grid,
	p => GetNeighbors(p),
	list => list.Sum());

AggregateNeighborhood<TPoint, TCell>(IGrid<TPoint, TCell>, Func<TPoint, IEnumerable<TPoint>>, Func<IEnumerable<TPoint>, TCell>)

Creates a new grid where the neighbors of a point are aggregated to the grid changing the type of the points.

public static void AggregateNeighborhood<TPoint, TCell>(IGrid<TPoint, TCell> grid, Func<TPoint, IEnumerable<TPoint>> getNeighborHood, Func<IEnumerable<TPoint>, TCell> aggregator)

Parameters

grid IGrid<TPoint, TCell>

Grid in which the operations are performed.

getNeighborHood Func<TPoint, IEnumerable<TPoint>>

This function is used to get all the neighborhood of a given point.

aggregator Func<IEnumerable<TPoint>, TCell>

This function is used to aggregate a list of point into a grid.

Type Parameters

TPoint

The type of the points of the grid.

TCell

The type of the cells of the grid.

Examples

Suppose we have a grid with a count of enemies in each cell, and we want a grid that has in each cell, the sum of the enemies in neighboring cells. We can use the following to do that:

var closeEnemyCount = AggregateNeighborhood(
	grid,
	p => GetNeighbors(p),
	list => list.Sum());