#inventory #instance #generic #framework #abstracting #testing #interchangeable

已删除 inventory-rs

一个独立于物品数据的库存系统

0.1.1 2022年7月17日
0.1.0 2022年7月17日

#20 in #abstracting

GPL-2.0-only

18KB
292

inventory-rs

一个用于泛化库存逻辑并将它从特定游戏的物品数据中抽象出来的框架。

设计规范

  • 所有内容都应该是可互换的,并尽可能通用。
  • 架构应该支持物品实例数据和物品元数据。
  • 应该非常可靠(使用Rust + 单元测试编写)。
  • 在新游戏中快速设置。

有关此crate的更多信息,请参阅 docs.rs


lib.rs:

一个用于泛化库存逻辑并将它从特定游戏的物品数据中抽象出来的框架。

设计规范

  • 所有内容都应该是可互换的,并尽可能通用。
  • 架构应该支持物品实例数据和物品元数据。
  • 应该非常可靠(使用Rust + 单元测试编写)。
  • 在新游戏中快速设置。

限制

此框架所做的唯一假设是您的物品有堆叠。即使您的物品没有堆叠并且只有单个物品,您仍然可以将其修改以与该系统一起使用,但效率会更低。但是,如果您的库存系统基本工作方式不同,您可以在这里的设计中获取灵感,同时进行具体的调整。

整体架构

  • trait IItem 永远不会改变的物品数据,如物品的外观、基本伤害、描述等。
  • trait IItemInstance 在实例之间更改的物品数据,如附魔、拥有数量、耐久度等。
  • trait ISlot 管理单个物品实例。适用于将用户动作绑定到不同类型的实例修改(堆叠拆分、堆叠合并等)。允许通过回调函数绑定到UI。
  • Vec<ISlot> 是库存的组成方式。在 inventory_management 中有一些内置函数可以帮助管理库存。

无运行时依赖