# bevy_intro_screen
This is a versatile Bevy library designed to create engaging and customizable introductory screens for your game. Initially conceived for splash screens, its flexibility allows for adaptation as loading screens between game states.
### Features
* **Customizable:** Tailor the appearance and behavior of your intro screen to perfectly match your game's style.
* **Flexible Duration:** Control the display time of your intro screen, whether fixed or dynamic based on loading progress.
* **Robust Failure Handling:** Implement custom error management for unexpected situations.
* **Extensible:** Easily add custom components and systems to expand functionality.
## Getting Started
1. Add the dependency to your `Cargo.toml`:
```rust
[dependencies]
bevy_intro_screen = "0.1.0"
```
2. Import the necessary stuff:
```rust,ignore
use bevy::prelude::*;
use bevy_intro_screen::prelude::*;
fn main() {
let run_at = ..;
let transition_to = ..;
// Included options include using egui;
let ui = ..;
let preferences = IntroPreferences::builder()
.run_at(run_at)
.transition_to(transition_to)
.skip_on_input(true)
.duration(FixedDuration::new(transition_to))
.ui(ui)
.build();
let splash_plugin = IntroScreenPlugin::builder()
.preferences(preferences)
.failure_manager(OnFailureContinue)
.build();
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(splash_plugin)
.run()
}
```
Please note that the examples provided here are simplified and serve as a starting point. For comprehensive documentation of the crate, please visit the [crate documentation](https://docs.rs/bevy_intro_screen) for a better understanding of the crate's functionalities and APIs.
For more examples, please refer to the examples directory.
## Usage Beyond Intro Screens
While primarily designed for splash screens, this library can be adapted to function as a loading screen between game states
## Contributing
Contributions are welcome! Feel free to open issues or pull requests.