bevy_platform_dirs 0.18.0

Expose the platform-dirs crate as a Bevy Resource.
Documentation
[![CI](https://codeberg.org/terrence/bevy_platform_dirs/badges/workflows/qa.yaml/badge.svg)](https://codeberg.org/terrence/bevy_platform_dirs/actions)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://codeberg.org/terrence/bevy_platform_dirs#LICENSE)
[![Crates.io](https://img.shields.io/crates/v/bevy_platform_dirs.svg)](https://crates.io/crates/bevy_platform_dirs)
[![Downloads](https://img.shields.io/crates/d/bevy_platform_dirs.svg)](https://crates.io/crates/bevy_platform_dirs)
[![Docs](https://docs.rs/bevy_platform_dirs/badge.svg)](https://docs.rs/bevy_platform_dirs/latest/bevy_platform_dirs/)

bevy_platform_dirs
==

Expose the [platform-dirs](https://crates.io/crates/platform-dirs) crate as a Bevy plugin.

Using standardized platform directories for your save data, cache files, generated configuration,
etc is both friendly to the user and makes an irrelevant decision easy.

## Supported Bevy Versions

| Bevy | bevy_platform_dirs |
| ---- |--------------------|
| 0.18 | 0.18               |

## Example

```rust
use bevy::prelude::*;
use bevy_platform_dirs::{PlatformDirs, PlatformDirsPlugin, PlatformDirsStep};
use std::fs;

fn main() {
   App::new()
       .add_plugins(DefaultPlugins)
       .add_plugins(PlatformDirsPlugin::new("MyAppName"))
       .add_systems(Startup, (setup_world.after(PlatformDirsStep::Startup), shutdown_test))
       .run();
}

fn setup_world(dirs: Res<PlatformDirs>, mut commands: Commands) -> Result {
    let mut path = dirs.app_dirs().state_dir.clone();
    path.push("savefile.json");

    let pos = if let Ok(fp) = fs::File::open(&path) {
        serde_json::from_reader(fp)?
    } else {
        0.0
    };

    commands.spawn((Name::new("Player"), Transform::from_xyz(pos, pos, pos)));
    Ok(())
}

fn shutdown_test(mut exit: MessageWriter<AppExit>) {
    exit.write(AppExit::Success);
}
```