torchbearer 0.3.6

Find your path in darkerer dungeons.
Documentation

Docs Crates.io Crates.io

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.

Get started

Implement the Map trait, and call field of vision or pathfinding algorithm.

use torchbearer::{Map, Point};
use torchbearer::fov::field_of_view;
use torchbearer::path::astar_path;

struct SampleMap {
    width: i32,
    height: i32,
    transparent: Vec<bool>,
    walkable: Vec<bool>,
}

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 visible_position in field_of_view(&sample_map, from, radius) {
    // (…)
}

if let Some(path) = astar_path(&sample_map, from, to) {
    // (…)
}