5个版本
0.2.2 | 2023年5月29日 |
---|---|
0.2.1 | 2023年5月29日 |
0.2.0 | 2023年5月29日 |
0.1.1 | 2022年3月15日 |
0.1.0 | 2022年3月13日 |
#373 在 游戏开发
每月 65次下载
33KB
239 行
game_stat
game_stat
是一个用于处理可随修饰符变化的统计数据的Rust小型库。装备了史诗之剑?那么你的攻击统计数据可能 增加40%。受到减益效果?你的移动速度可能会 减少50%。
示例代码
let mut armor_stat: Stat<2> = Stat::new(10f32);
{
let _modifier_handle = armor_stat.add_modifier(StatModifier::Flat(5f32));
println!("armor_stat is: {} it should be 15!", armor_stat.value());
}
println!("armor_stat is: {}, It should be 10!", armor_stat.value());
Stat<2>
该库内部使用TinyVec来存储修饰符(用于优化)。2的值意味着我们可以在栈上存储2个修饰符,如果超过这个数量,我们将它们内部移动到堆上。armor_stat.value()
返回基于活动修饰符的统计数据值。- 我们添加了一个固定修饰符,只要
_modifier_handle
存在,它就是有效的,这就是为什么当它从栈上移除时,值会回到10。
特性
- 再见
stat.remove_modifier()
。这个库没有这样的功能,相反,一个修饰符只要有一个对其的引用就有效。这是一个不错的主意,但我还不知道这种设计选择是否实用。 - 可定制修饰符顺序(可选),某些游戏可能需要更可定制的修饰符应用,可以使用
stat.add_modifier_with_order()
而不是stat.add_modifier()
。
是否已准备好用于战斗?
还没有使用它完成任何主要项目。我不确定它的稳定性/性能,因为我内部使用了启用 sync
功能的互斥锁和内部可变性。我现在正在测试这个库用于一座防御塔游戏。时间会证明一切 :)。
许可协议
gamestat是免费和开源的!此仓库中的所有代码都可在以下许可协议下使用:
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
- Apache许可证2.0版本 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
任选其一。
除非您明确声明,否则您根据Apache-2.0许可证定义提交的任何有意包含在作品中的贡献,应按上述方式双授权,不附加任何其他条款或条件。
依赖项
~190–435KB
~14K SLoC