1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
//! Embedded asset management.
//!
//! ## Overview
//!
//! `asset_manager` is one of the most important modules in this project. It handles loading and packaging of in-game resources.
//! Generally in a game, you might distribute an executable along with a zip of everything needed to run,
//! but we have had some issues with this before on systems with restrictive file permissions (cough OSX).
//!
//! To make the game distribution process easier, we embed our resources directly into the executable's data section using
//! [`rust-embed`](https://github.com/pyros2097/rust-embed). This means we only have to distribute one single file to players.
//!
//! ## Debug vs. Release mode
//!
//! When the game is built in debug mode (with `cargo build`), the resources are *not* packaged into the game.
//! Instead, they are read from disk, allowing us to modify them while the game is running, and speeding up the compile times.
//!
//! When the game is built in release mode (with `cargo build --release`), the resources are packaged into the game as described above.
//! This means the game will load faster, but also use more RAM.
mod datastore;
pub use datastore::InternalData;
mod json;
pub use json::{InternalJsonLoadError, load_json_structure};
mod sprite_types;
pub use sprite_types::{KnownSpriteType, load_known_sprite_types};
mod texture;
pub use texture::{load_texture_from_internal_data, ResourceLoadError};