vn-settings 0.4.0

Various settings intended to simulate visual novels
Documentation
# Visual Novel settings

[![Crates.io](https://img.shields.io/crates/v/vn-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. Scene value (`scene`)
2. Character specific scene value (`characters_scene`)
3. Aspect value (`aspect`)
4. Character specific aspect value (`characters_aspect`)
5. Character specific default value (`characters_default`)
6. Default value (`default`)

Aspects are story-driven overrides (e.g. a "Mood" aspect with values like "Happy" or "Sad") that globally affect visual settings based on the current state of the story.

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

| Type                | Description                                         |
|---------------------|-----------------------------------------------------|
| `PlayerSettings`    | Root container for all configuration                |
| `Override<T>`       | 6-level hierarchical value management               |
| `Parameter`         | Addressable setting path                            |
| `Setter`            | Setting path paired with a value                    |
| `Change`            | Mutation operation for scene-level overrides         |

## Documentation

[API Reference](https://docs.rs/vn-settings)

*Developed with ❤️ for visual novel creators*