6个版本
0.8.7 | 2022年10月4日 |
---|---|
0.8.2 | 2021年2月10日 |
0.8.1 | 2020年4月29日 |
0.7.0 | 2020年2月22日 |
0.1.0 | 2020年2月21日 |
在游戏开发中排名第1615
每月下载量4,257次
用于10个crate(直接使用2个)
88KB
2K SLoC
bracket-algorithm-traits
此crate提供了用于在
使用特性接口意味着
所有内容都通过
地图索引
真正的最小实现(将
TestMap
替换为您自己的地图结构)
struct TestMap{};
impl BaseMap for TestMap {}
impl Algorithm2D for TestMap{
fn dimensions(&self) -> Point {
Point::new(2, 2)
}
}
这足以提供以下服务
in_bounds(Point)
:一个点是否位于地图的维度内?point2d_to_index(Point) -> usize
:为点提供一个数组索引,在地图维度内。它假设您的数组以列为中心进行扩展。index_to_point2d(usize) -> Point
:为给定的数组索引提供一个x/y坐标,假设相同的扩展。
如果您不喜欢默认实现,可以自由地覆盖它们。
还有一个等效的
Algorithm3D
用于基于3D网格的地图(用
Point3D
替换
Point
)。
地图遍历
BaseMap
特性帮助您定义地图。如果您想使用路径查找,您需要实现
is_opaque
函数
impl BaseMap for MyMap {
fn is_opaque(&self, _idx: usize) -> bool {
false
}
}
为了支持路径查找,您还需要实现两个其他函数
impl BaseMap for MyMap {
fn get_available_exits(&self, idx: usize) -> SmallVec<[(usize, f32); 10]> {
Vec::new()
// Provide a list of exit indices (you can use point2d_to_index to generate them) for this
// tile inside the array.
// Do NOT include the current tile as an available exit.
}
fn get_pathing_distance(&self, _idx1: usize, _idx2: usize) -> f32 {
1.0
// This should be a distance, using whatever heuristic you prefer.
}
依赖关系
~1.5MB
~33K SLoC