72个版本 (18个破坏性版本)
0.19.0 | 2024年4月17日 |
---|---|
0.17.1 | 2024年3月30日 |
0.15.0 | 2023年12月27日 |
0.12.0 | 2023年8月17日 |
0.2.0 | 2021年12月31日 |
#429 in 游戏开发
235KB
6K SLoC
图形库
这是一个围绕 Pixels 设计的简单封装库,用于与 Buffer Graphics Lib 一起使用
用法
Cargo
在您的 Cargo.toml
文件中添加
pixels-graphics-lib = "0.19.0"
winit_input_helper = "0.16.0" #only needed if you're not using `run()`
代码
您可以使用 run_scenes
使用场景(需要默认功能 scenes
)
fn main() -> Result<()> {
// Window prefs allow the size and position of the window to be saved and restored
let window_prefs = WindowPreferences::new("com", "example", "app", 1)?;
// Options contains scaling, UPS, etc
let options = Options::default();
// The switcher is how new scenes are created
let switcher: SceneSwitcher<SceneResult, SceneName> =
|style, scene_stack, new_scene| match new_scene {
SceneName::Example => scene_stack.push(ExampleScene::new()),
};
let first_scene = ExampleScene::new();
run_scenes(
300,
300,
"Scenes Example",
Some(window_prefs),
switcher,
first_scene,
options,
empty_pre_post()
)?;
Ok(())
}
// The scene name is the id used so the switcher knows which one to create
#[derive(Clone, Debug, PartialEq)]
enum SceneName {
Example,
}
// After a scene is finished it can return values to it's parent using scene result
#[derive(Clone, Debug, PartialEq)]
enum SceneResult {}
struct ExampleScene {}
impl ExampleScene {
pub fn new() -> Box<Self> {
Box::new(Self {})
}
}
impl Scene<SceneResult, SceneName> for ExampleScene {
fn render(
&mut self,
graphics: &mut Graphics,
mouse_xy: Coord,
held_keys: &[KeyCode]) {
todo!()
}
fn update(
&mut self,
timing: &Timing,
mouse_xy: Coord,
held_keys: &[KeyCode],
) -> SceneUpdateResult<SceneResult, SceneName> {
todo!()
}
}
或使用 run
进行更底层的操作
struct Example {}
fn main() -> Result<()> {
let system = Box::new(Example {});
run(240, 160, "Example", Box::new(system), Options::default())?;
Ok(())
}
//Check `src/scenes.rs` for examples of implementing held keys, etc
impl System for Example {
fn update(&mut self, timing: &Timing) {}
fn render(&mut self, graphics: &mut Graphics) {}
}
功能
默认功能:
window_prefs
、sound
、serde
、scenes
window_prefs
保存和恢复窗口位置和大小
要使用此功能,impl System
必须重写 System::window_prefs()
scenes
启用 Scene
和 run_scenes
包含 window_prefs
controller
- 添加游戏手柄支持
- 将游戏手柄状态添加到
Scene::update
、Scene::render
controller_xinput
与上述类似,但使用xinput,仅限Windows
sound
播放音乐或音效
serde
将 Serialize
和 Deserialize
添加到大多数结构和枚举
images
加载和显示PNG、JPEG、BMP
file_dialogs
内置文件选择对话框,不建议使用,请使用 rfd
mint
启用 graphic-shapes/mint
项目
复古游戏
一些复古游戏
ICI图像编辑器
用于 IndexedImage
、ICI文件的编辑器
USFX测试器
用于 USFX 的测试GUI
字体面板
用于创建 Buffer图形 字体的程序
依赖关系
~7–48MB
~744K SLoC