# Visual Novel settings
[](https://crates.io/crates/vn-settings)
A cross-platform configuration system for visual novels, featuring cascading overrides and real-time state management.
## Overrides
This library provides various settings to simulate visual novels in Rust applications.
It includes settings for colors, timing, images, objects, layout, and names.
Each parameter can have a default value and you can add temporary overrides to these values, which will only be active during a single continuous dialog.
Most parameters can also have a character specific values, which are only set when a character speaks. These character specific parameters can also have temporary overrides.
The priorities of the values is like this:
1. General scene value (`scene`)
2. General character specific scene value (`characters_scene`)
3. General character specific default value (`characters_default`)
4. General default value (`default`)
This should make managing state for visual novels easy.
## Features
🎨 **Cascading Settings**
Override colors, timing, and layouts at multiple levels:
```rust
settings.set_character_default(Setter::Color(
ColorParameter::Dialog(BoxColorParameter::TextFill).named("Alice"),
Color::RED
));
```
🔄 **State Management**
Track defaults, character-specific overrides, and scene changes:
```rust
settings.change(&Change::Timing(
TimingParameter::AutoNext.named("FastMode"),
1.0
));
```
📦 **Serialization Ready**
All types implement `serde::Serialize` (enable `serde` feature).
## Core Types
| `PlayerSettings` | Root container for all configuration |
| `Override<T>` | Hierarchical value management |
| `Parameter` | Addressable setting path |
| `Change` | Mutation operation |
## Documentation
[API Reference](https://docs.rs/vn-settings)
*Developed with ❤️ for visual novel creators*