procedural_tilemaps_core/
lib.rs1#![warn(missing_docs)]
2
3use generator::model::{ModelIndex, ModelRotation, ModelVariantIndex};
7use grid::GridIndex;
8
9pub mod grid;
10pub mod prelude;
11
12pub mod generator;
14
15pub type NodeIndex = GridIndex;
17
18#[derive(thiserror::Error, Debug, Clone, Copy)]
20#[error("Failed to generate, contradiction at node with index {}", node_index)]
21pub struct GeneratorError {
22 pub node_index: NodeIndex,
24}
25
26#[derive(thiserror::Error, Debug, Clone, Copy)]
28pub enum RulesBuilderError {
29 #[error("Empty models or sockets collection")]
31 NoModelsOrSockets,
32}
33
34#[derive(thiserror::Error, Debug, Clone)]
36pub enum NodeSetError {
37 #[error("Invalid model variant index `{0}`, does not exist in the rules")]
39 InvalidModelIndex(ModelVariantIndex),
40 #[error("Invalid model variant reference: model index `{0}` with rotation `{1:?}`, does not exist in the rules")]
42 InvalidModelRef(ModelIndex, ModelRotation),
43 #[error("Invalid node index `{0}`, does not exist in the grid")]
45 InvalidNodeIndex(NodeIndex),
46 #[error("Model variant `{0}` not allowed by the Rules on node {1}")]
48 IllegalModel(ModelVariantIndex, NodeIndex),
49 #[error("Generation error: {0}")]
51 GenerationError(#[from] GeneratorError),
52}
53
54#[derive(thiserror::Error, Debug, Clone)]
56pub enum GeneratorBuilderError {
57 #[error("Initial node set error: {0}")]
59 InitialNodeSetError(#[from] NodeSetError),
60 #[error("Given grid size {0:?} does not match the expected size {1:?}")]
62 InvalidGridSize(usize, usize),
63}