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

Safe HaskellNone
LanguageHaskell2010

Game.LambdaHack.Client.Bfs

Contents

Description

Breadth first search algorithms.

Synopsis

Documentation

data BfsDistance Source #

Weighted distance between points along shortest paths.

Instances

Bounded BfsDistance Source # 
Enum BfsDistance Source # 
Eq BfsDistance Source # 
Ord BfsDistance Source # 
Show BfsDistance Source # 
Bits BfsDistance Source # 

data MoveLegal Source #

State of legality of moves between adjacent points.

Instances

apartBfs :: BfsDistance Source #

The distance value that denote no legal path between points. The next value is the minimal distance value assigned to paths that don't enter any unknown tiles.

fillBfs Source #

Arguments

:: (Point -> Point -> MoveLegal)

is a move from known tile legal

-> (Point -> Point -> Bool)

is a move from unknown legal

-> Point

starting position

-> Array BfsDistance

initial array, with apartBfs

-> Array BfsDistance

array with calculated distances

Fill out the given BFS array. Unsafe PointArray operations are OK here, because the intermediate values of the vector don't leak anywhere outside nor are kept unevaluated and so they can't be overwritten by the unsafe side-effect.

findPathBfs :: (Point -> Point -> MoveLegal) -> (Point -> Point -> Bool) -> Point -> Point -> Int -> Array BfsDistance -> Maybe [Point] Source #

Find a path, without the source position, with the smallest length. The eps coefficient determines which direction (or the closest directions available) that path should prefer, where 0 means north-west and 1 means north.

accessBfs :: Array BfsDistance -> Point -> Maybe Int Source #

Access a BFS array and interpret the looked up distance value.

Internal operations

minKnownBfs :: BfsDistance Source #

The minimal distance value assigned to paths that don't enter any unknown tiles.