Trait movingai::Map2D [] [src]

pub trait Map2D<T> {
    fn height(&self) -> usize;
fn width(&self) -> usize;
fn get(&self, coords: Coords2D) -> &T;
fn is_out_of_bound(&self, coords: Coords2D) -> bool;
fn is_traversable(&self, tile: Coords2D) -> bool;
fn is_traversable_from(&self, from: Coords2D, to: Coords2D) -> bool;
fn coords(&self) -> CoordsIter;
fn free_states(&self) -> usize;
fn neighbors(&self, tile: Coords2D) -> Vec<Coords2D>; }

A trait representing common operations that can be performed on 2D Maps representations.

Required Methods

Every Map2D must have an height.

Every Map2D must have a width.

In every Map2D must be possible to get a tile.

Arguments:

  • coords (Coords2D) : A tuple representing the desired coordinates.

Examples:

use movingai::Map2D;
use movingai::MovingAiMap;

let mm = MovingAiMap::new(
       String::from("test"),
       54,
       56,
       vec!['.'; 54*56]
   );
let result = mm.get((23,4));
assert_eq!(*result, '.')

Check if the given coordinates are out of bound.

Examples

assert!(mm.is_out_of_bound((76,3)));
assert!(!mm.is_out_of_bound((23,23)));

Check if a tile in the map can be traversed.

This check if a tile can be traversed by an agent in some situation. For instance, a water tile W is traversable if coming from another water tile, so this function will return true.

The only things that can not be traversed are trees (T), out of bounds, and other unpassable obstacles (@ and `O``).

Check if a tile in the map can be traversed coming from the from tile.

Arguments

  • from The tile from which the agent starts moving.
  • to The destination tile.

Details

For instance, in MovingAIMap the implementation encodes all the MovingAI rules about traversability.

In particular:

  • A water tile (W) can be traversed but only if the agent does not comes from regular terrain (. and G).
  • A swamp tile (S) can be traversed only if the agent comes from regular terrain.

For example, I can move from W to W or form W to ., but not from . to W. Or I can move from . to S or from S to ., or from S to S but not from S to W (and vice versa).

Important traits for CoordsIter

Return an iterator returning all the coordinates in the map in row-major order.

Return the number of free states of a map.

For "free state" we means any tile that can potentially be traversed.

Return the list of accessible neighbors of a tile.

Implementors