A set of tools to find your path in a grid based dungeon. Field of view, pathfinding...
Inspired by tcod-rs and bracket-pathfinding, it aims to be simpler to use than tcod, without requiring a sdl2 dependency, and faster than bracket-pathfinding.
The field of vision algorithm perform quite well, but the pathfinding one will need some serious optimizations to be competitive, as tcod is fast, really fast.
Implement the Map
trait, and call field of vision or pathfinding algorithm.
```rust use torchbearer::{Map, Point}; use torchbearer::fov::fieldofview; use torchbearer::path::astar_path;
struct SampleMap {
width: i32,
height: i32,
transparent: Vec
impl SampleMap { fn new(width: i32, height: i32) -> Self { // (…) } }
impl Map for SampleMap { fn dimensions(&self) -> (i32, i32) { (self.width, self.height) }
fn is_transparent(&self, x: i32, y: i32) -> bool {
self.transparent[(x + y * self.width) as usize]
}
fn is_walkable(&self, x: i32, y: i32) -> bool {
self.walkable[(x + y * self.width) as usize]
}
}
let sample_map = SampleMap::new(16, 10);
// (…) You probably want at this point to add some walls to your map.
let from = (1,1); let to = (3,8); let radius = 5;
for visibleposition in fieldofview(&samplemap, from, radius) { // (…) }
if let Some(path) = astarpath(&samplemap, from, to) { // (…) } ```