UNPKG

rot-js

Version:

A roguelike toolkit in JavaScript

60 lines (59 loc) 2.53 kB
import FOV, { VisibilityCallback } from "./fov.js"; /** * @class Recursive shadowcasting algorithm * Currently only supports 4/8 topologies, not hexagonal. * Based on Peter Harkins' implementation of Björn Bergström's algorithm described here: http://www.roguebasin.com/index.php?title=FOV_using_recursive_shadowcasting * @augments ROT.FOV */ export default class RecursiveShadowcasting extends FOV { /** * Compute visibility for a 360-degree circle * @param {int} x * @param {int} y * @param {int} R Maximum visibility radius * @param {function} callback */ compute(x: number, y: number, R: number, callback: VisibilityCallback): void; /** * Compute visibility for a 180-degree arc * @param {int} x * @param {int} y * @param {int} R Maximum visibility radius * @param {int} dir Direction to look in (expressed in a ROT.DIRS value); * @param {function} callback */ compute180(x: number, y: number, R: number, dir: number, callback: VisibilityCallback): void; /** * Compute visibility for a 90-degree arc * @param {int} x * @param {int} y * @param {int} R Maximum visibility radius * @param {int} dir Direction to look in (expressed in a ROT.DIRS value); * @param {function} callback */ compute90(x: number, y: number, R: number, dir: number, callback: VisibilityCallback): void; /** * Render one octant (45-degree arc) of the viewshed * @param {int} x * @param {int} y * @param {int} octant Octant to be rendered * @param {int} R Maximum visibility radius * @param {function} callback */ _renderOctant(x: number, y: number, octant: number[], R: number, callback: VisibilityCallback): void; /** * Actually calculates the visibility * @param {int} startX The starting X coordinate * @param {int} startY The starting Y coordinate * @param {int} row The row to render * @param {float} visSlopeStart The slope to start at * @param {float} visSlopeEnd The slope to end at * @param {int} radius The radius to reach out to * @param {int} xx * @param {int} xy * @param {int} yx * @param {int} yy * @param {function} callback The callback to use when we hit a block that is visible */ _castVisibility(startX: number, startY: number, row: number, visSlopeStart: number, visSlopeEnd: number, radius: number, xx: number, xy: number, yx: number, yy: number, callback: VisibilityCallback): void; }