nightshade 0.13.2

A cross-platform data-oriented game engine.
Documentation
//! A data-driven interactive-fiction engine.
//!
//! Three layers, all game-agnostic:
//!
//! - [`data`] — authored content types: `World`, `Room`, `Item`,
//!   `Entity`, `Rule`, `Condition`, `Effect`, `Trigger`, `Dialogue`,
//!   `Quest`, `Timer`, `Text`, `VerbResponses`, and more. Every type
//!   derives `Serialize` and `Deserialize`.
//! - [`engine`] — the interpreter: rule dispatch, condition and effect
//!   evaluation, text resolution, choice assembly, the turn loop,
//!   load-time validation, and save/load.
//! - [`parser`] — a typed-command parser that maps free-form text
//!   ("take key", "go n", "look at the drip") onto the engine's
//!   currently-available choices.
//!
//! Enable the `interactive_fiction` feature on the `nightshade` crate to
//! use this module. Build an adventure by constructing a [`World`] (via
//! builder chains on every aggregate type), hand it to [`Engine::new`],
//! and drive it with [`Engine::pick`] against inputs from [`parse`] or
//! any other view layer you prefer.

pub mod data;
pub mod engine;
pub mod parser;

pub use data::{
    CharacterBuilder, Choice, ChoiceAction, Condition, ConditionId, Dialogue, DialogueId,
    DialogueNode, DialogueOption, Effect, Ending, EndingId, Entity, EntityId, EntityKind,
    EntityLocation, EventName, ExamineTarget, Exit, FlagKey, Item, ItemId, ItemLocation,
    ItemProperties, NodeId, ObjectBuilder, Placeholder, Quest, QuestId, QuestStage, QuestStageKind,
    QuestTransition, Room, RoomId, Rule, RuleId, RuntimeState, ScheduledEvent, StatKey, Text,
    TextId, Timer, TimerId, TranscriptEntry, Trigger, TriggerKind, Value, VerbResponses, World,
};
pub use engine::{Engine, ValidationError};
pub use parser::{Parsed, parse};