Package tdl :: Module map
[frames] | no frames]

Module map

source code

Rogue-like map utilitys such as line-of-sight, field-of-view, and path-finding.

Classes
  Map
Fast field-of-view and path-finding on stored data.
  AStar
A* pathfinder
Functions
set((x, y), ...)
quick_fov(x, y, callback, fov='PERMISSIVE', radius=7.5, lightWalls=True, sphere=True)
All field-of-view functionality in one call.
source code
 
bresenham(x1, y1, x2, y2)
Return a list of points in a bresenham line.
source code
Function Details

quick_fov(x, y, callback, fov='PERMISSIVE', radius=7.5, lightWalls=True, sphere=True)

source code 

All field-of-view functionality in one call.

Before using this call be sure to make a function, lambda, or method that takes 2 positional parameters and returns True if light can pass through the tile or False for light-blocking tiles and for indexes that are out of bounds of the dungeon.

This function is 'quick' as in no hassle but can quickly become a very slow function call if a large radius is used or the callback provided itself isn't optimized.

Always check if the index is in bounds both in the callback and in the returned values. These values can go into the negatives as well.

Parameters:
  • x (int) - x center of the field-of-view
  • y (int) - y center of the field-of-view
  • callback (function) - This should be a function that takes two positional arguments x,y and returns True if the tile at that position is transparent or False if the tile blocks light or is out of bounds.
  • fov (string) - The type of field-of-view to be used. Available types are:

    'BASIC', 'DIAMOND', 'SHADOW', 'RESTRICTIVE', 'PERMISSIVE', 'PERMISSIVE0', 'PERMISSIVE1', ..., 'PERMISSIVE8'

  • radius (float) - Raduis of the field-of-view.

    When sphere is True a floating point can be used to fine-tune the range. Otherwise the radius is just rounded up.

    Be careful as a large radius has an exponential affect on how long this function takes.

  • lightWalls (boolean) - Include or exclude wall tiles in the field-of-view.
  • sphere (boolean) - True for a spherical field-of-view. False for a square one.
Returns: set((x, y), ...)
Returns a set of (x, y) points that are within the field-of-view.

bresenham(x1, y1, x2, y2)

source code 

Return a list of points in a bresenham line.

Implementation hastily copied from RogueBasin.

Returns:
Returns a list of (x, y) points, including both the start and endpoints.