LambdaHack- A game engine library for roguelike dungeon crawlers

Safe HaskellNone



Basic operations on 2D points represented as linear offsets.



type X = Int Source

Spacial dimension for points and vectors.

type Y = Int Source

Spacial dimension for points and vectors.

data Point Source

2D points in cartesian representation. Coordinates grow to the right and down, so that the (0, 0) point is in the top-left corner of the screen. Coordinates are never negative.




px :: !X
py :: !Y

maxLevelDimExponent :: Int Source

The maximum number of bits for level X and Y dimension (16). The value is chosen to support architectures with 32-bit Ints.

chessDist :: Point -> Point -> Int Source

The distance between two points in the chessboard metric.

euclidDistSq :: Point -> Point -> Int Source

Squared euclidean distance between two points.

adjacent :: Point -> Point -> Bool Source

Checks whether two points are adjacent on the map (horizontally, vertically or diagonally).

inside :: Point -> (X, Y, X, Y) -> Bool Source

Checks that a point belongs to an area.

bla :: X -> Y -> Int -> Point -> Point -> Maybe [Point] Source

Bresenham's line algorithm generalized to arbitrary starting eps (eps value of 0 gives the standard BLA). Skips the source point and goes through the second point to the edge of the level. GIves Nothing if the points are equal. The target is given as Point to permit aiming out of the level, e.g., to get uniform distributions of directions for explosions close to the edge of the level.

fromTo :: Point -> Point -> [Point] Source

A list of all points on a straight vertical or straight horizontal line between two points. Fails if no such line exists.