LambdaHack-0.2.8: A roguelike game engine in early and active development

Safe HaskellNone



DFOV (Digital Field of View) implemented according to specification at This fast version of the algorithm, based on PFOV, has AFAIK never been described nor implemented before.





:: Distance

visiblity radius

-> (Bump -> Bool)

clear tile predicate

-> [Bump] 

Calculates the list of tiles, in Bump coordinates, visible from (0, 0), within the given sight range.

dline :: Bump -> Bump -> LineSource

Create a line from two points. Debug: check if well-defined.

dsteeper :: Bump -> Bump -> Bump -> BoolSource

Compare steepness of (p1, f) and (p2, f). Debug: Verify that the results of 2 independent checks are equal.

intersect :: Line -> Distance -> (Int, Int)Source

The X coordinate, represented as a fraction, of the intersection of a given line and the line of diagonals of diamonds at distance d from (0, 0).

debugSteeper :: Bump -> Bump -> Bump -> BoolSource

Debug functions for DFOV:

Debug: calculate steeper for DFOV in another way and compare results.

debugLine :: Line -> (Bool, String)Source

Debug: check is a view border line for DFOV is legal.