3个不稳定版本

0.2.0 2021年6月17日
0.1.1 2018年8月9日
0.1.0 2018年8月9日

552游戏开发

Download history 41/week @ 2024-03-29 4/week @ 2024-04-05

每月72次 下载

MIT/Apache

10KB
130

ZComponents - 一个简单的组件存储

Crates.io Docs.rs

我发现“严肃”的ECS对于回合制游戏逻辑来说是过度的,所以我创建了这个简单的库,它只做一件事:存储您的组件。

基本示例

use zcomponents::zcomponents_storage;

#[derive(PartialEq, Eq, Clone, Copy, Debug, Hash, Default)]
pub struct Id(i32);

#[derive(Clone, Debug)]
pub struct SomeComponent(pub i32);

#[derive(Clone, Debug)]
pub struct SomeFlag;

zcomponents_storage!(Storage<Id>: {
    component: SomeComponent,
    flag: SomeFlag,
});

let mut storage = Storage::new();

let id0 = storage.alloc_id();
storage.component.insert(id0, SomeComponent(0));

let id1 = storage.alloc_id();
storage.component.insert(id1, SomeComponent(1));
storage.flag.insert(id1, SomeFlag);

storage.component.get_mut(id0).0 += 1;

if let Some(component) = storage.component.get_opt_mut(id1) {
    component.0 += 1;
}

storage.flag.remove(id1);

storage.remove(id0);

在crate的文档中查看更高级的示例 在这里

实现

它通过一个简单的宏和一些简单的HashMap实现,因此不要期望有任何出色的性能。

无运行时依赖