2个版本
新 0.1.1 | 2024年8月17日 |
---|---|
0.1.0 | 2024年7月4日 |
#308 在 编码
340 每月下载量
用于 2 crates
755KB
16K SLoC
rosu-mods
rosu-mods是一个库,提供官方mods.json文件中定义的所有osu!游戏模组的类型。
通过generate-mods
二进制文件自动生成单个游戏模组类型。
类型
总共有三个不同的mod集合。
GameModsLegacy
GameModsLegacy
是一个轻量级类型,本质上是对旧版mod的位标志。
use rosu_mods::GameModsLegacy;
let hdnc = GameModsLegacy::Nightcore | GameModsLegacy::Hidden;
assert_eq!(hdnc.to_string(), "HDNC");
assert!(hdnc.contains(GameModsLegacy::DoubleTime));
GameMods
GameMods
是GameMod
枚举的集合。 GameMod
区分每种模式,如果一个mod适用于多种模式,每种模式都会有该mod的变体。
use rosu_mods::{GameMod, GameMods, generated_mods::AccuracyChallengeMania};
// The `mods!` macro is only available if the `macros` feature is enabled
let mut mods: GameMods = rosu_mods::mods!(Taiko: AC HR);
// In addition to the two taiko mods, let's add a mania mod too
mods.insert(GameMod::AccuracyChallengeMania(AccuracyChallengeMania {
restart: Some(true),
..Default::default()
}));
assert_eq!(mods.to_string(), "HRACAC");
let mut iter = mods.into_iter();
assert_eq!(iter.next(), Some(GameMod::HardRockTaiko(Default::default())));
assert_eq!(iter.next(), Some(GameMod::AccuracyChallengeTaiko(Default::default())));
assert_eq!(iter.next(), Some(GameMod::AccuracyChallengeMania(AccuracyChallengeMania {
restart: Some(true),
minimum_accuracy: None,
accuracy_judge_mode: None,
})));
assert_eq!(iter.next(), None);
GameModsIntermode
GameModsIntermode
是GameModIntermode
枚举的集合。与GameMod
不同,这个枚举不区分模式。因此,变体不携带更多数据,因为一个mod可能根据模式具有不同的设置。
由于GameModsIntermode
不携带额外数据,并且变体较少,因此通常比GameMods
更容易处理。
use rosu_mods::{GameModIntermode, GameModsIntermode};
// The `mods!` macro is only available if the `macros` feature is enabled
let mut mods: GameModsIntermode = rosu_mods::mods!(WG FI);
// Let's add some more mods
mods.extend([GameModIntermode::Easy, GameModIntermode::HardRock]);
assert_eq!(mods.to_string(), "EZHRFIWG");
let mut iter = mods.into_iter();
assert_eq!(iter.next(), Some(GameModIntermode::Easy));
assert_eq!(iter.next(), Some(GameModIntermode::HardRock));
assert_eq!(iter.next(), Some(GameModIntermode::FadeIn));
assert_eq!(iter.next(), Some(GameModIntermode::Wiggle));
assert_eq!(iter.next(), None);
特性
标志 | 描述 | 依赖 |
---|---|---|
默认 |
未启用任何功能 | |
宏 |
启用mods! 宏 |
粘贴 |
serde |
实现了所有类型的 serde::{Deserialize, Serialize} 功能,并启用了 serde 模块 |
serde |
rkyv |
实现了所有类型的 rkyv::{Archive, Serialize, Deserialize} 功能,并启用了 rkyv 模块 |
rkyv |
依赖
~0–385KB