LambdaHack-0.6.1.0: A game engine library for roguelike dungeon crawlers

Safe HaskellNone
LanguageHaskell2010

Game.LambdaHack.Common.Point

Description

Basic operations on 2D points represented as linear offsets.

Synopsis

Documentation

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.

Constructors

Point 

Fields

Instances

Enum Point Source # 
Eq Point Source # 

Methods

(==) :: Point -> Point -> Bool #

(/=) :: Point -> Point -> Bool #

Ord Point Source # 

Methods

compare :: Point -> Point -> Ordering #

(<) :: Point -> Point -> Bool #

(<=) :: Point -> Point -> Bool #

(>) :: Point -> Point -> Bool #

(>=) :: Point -> Point -> Bool #

max :: Point -> Point -> Point #

min :: Point -> Point -> Point #

Show Point Source # 

Methods

showsPrec :: Int -> Point -> ShowS #

show :: Point -> String #

showList :: [Point] -> ShowS #

Generic Point Source # 

Associated Types

type Rep Point :: * -> * #

Methods

from :: Point -> Rep Point x #

to :: Rep Point x -> Point #

Binary Point Source # 

Methods

put :: Point -> Put #

get :: Get Point #

putList :: [Point] -> Put #

NFData Point Source # 

Methods

rnf :: Point -> () #

type Rep Point Source # 
type Rep Point = D1 * (MetaData "Point" "Game.LambdaHack.Common.Point" "LambdaHack-0.6.1.0-HURqEs4cFyW7LJywblRLqn" False) (C1 * (MetaCons "Point" PrefixI True) ((:*:) * (S1 * (MetaSel (Just Symbol "px") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 * X)) (S1 * (MetaSel (Just Symbol "py") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 * 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.