195 lines
4.1 KiB
Rust
195 lines
4.1 KiB
Rust
use std::collections::BTreeMap;
|
|
|
|
pub mod templates;
|
|
pub mod enums {
|
|
use serde_derive::{Deserialize, Serialize};
|
|
|
|
#[cfg(feature = "tsify")]
|
|
use tsify::Tsify;
|
|
#[cfg(feature = "tsify")]
|
|
use wasm_bindgen::prelude::*;
|
|
|
|
use std::fmt::Display;
|
|
use strum::{AsRefStr, EnumIter, EnumString, FromRepr};
|
|
|
|
pub mod basic;
|
|
pub mod prefabs;
|
|
pub mod script;
|
|
|
|
#[derive(Debug)]
|
|
pub struct ParseError {
|
|
pub enm: String,
|
|
}
|
|
|
|
impl Display for ParseError {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
write!(f, "Unknown enum '{}'", self.enm)
|
|
}
|
|
}
|
|
|
|
impl std::error::Error for ParseError {}
|
|
|
|
#[derive(
|
|
Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, EnumString,
|
|
)]
|
|
#[cfg_attr(feature = "tsify", derive(Tsify))]
|
|
#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))]
|
|
pub enum MemoryAccess {
|
|
Read,
|
|
Write,
|
|
ReadWrite,
|
|
}
|
|
|
|
#[derive(
|
|
Debug,
|
|
Default,
|
|
Clone,
|
|
Copy,
|
|
PartialEq,
|
|
PartialOrd,
|
|
Eq,
|
|
Ord,
|
|
Hash,
|
|
Serialize,
|
|
Deserialize,
|
|
EnumIter,
|
|
AsRefStr,
|
|
FromRepr,
|
|
EnumString,
|
|
)]
|
|
#[cfg_attr(feature = "tsify", derive(Tsify))]
|
|
#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))]
|
|
pub enum ConnectionType {
|
|
Pipe,
|
|
Power,
|
|
Data,
|
|
Chute,
|
|
Elevator,
|
|
PipeLiquid,
|
|
LandingPad,
|
|
LaunchPad,
|
|
PowerAndData,
|
|
RoboticArmRail,
|
|
#[serde(other)]
|
|
#[default]
|
|
None,
|
|
}
|
|
|
|
#[derive(
|
|
Debug,
|
|
Default,
|
|
Clone,
|
|
Copy,
|
|
PartialEq,
|
|
PartialOrd,
|
|
Eq,
|
|
Ord,
|
|
Hash,
|
|
Serialize,
|
|
Deserialize,
|
|
EnumIter,
|
|
AsRefStr,
|
|
FromRepr,
|
|
EnumString,
|
|
)]
|
|
#[cfg_attr(feature = "tsify", derive(Tsify))]
|
|
#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))]
|
|
pub enum ConnectionRole {
|
|
Input,
|
|
Input2,
|
|
Output,
|
|
Output2,
|
|
Waste,
|
|
#[serde(other)]
|
|
#[default]
|
|
None,
|
|
}
|
|
|
|
#[derive(
|
|
Debug,
|
|
Default,
|
|
Clone,
|
|
Copy,
|
|
PartialEq,
|
|
PartialOrd,
|
|
Eq,
|
|
Ord,
|
|
Hash,
|
|
Serialize,
|
|
Deserialize,
|
|
EnumIter,
|
|
AsRefStr,
|
|
FromRepr,
|
|
EnumString,
|
|
)]
|
|
#[cfg_attr(feature = "tsify", derive(Tsify))]
|
|
#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))]
|
|
#[repr(u32)]
|
|
pub enum MachineTier {
|
|
#[default]
|
|
Undefined = 0,
|
|
TierOne = 1,
|
|
TierTwo = 2,
|
|
TierThree = 3,
|
|
#[serde(other)]
|
|
Max,
|
|
}
|
|
|
|
#[derive(
|
|
Default,
|
|
Debug,
|
|
Clone,
|
|
Copy,
|
|
PartialEq,
|
|
Eq,
|
|
PartialOrd,
|
|
Ord,
|
|
Hash,
|
|
EnumString,
|
|
AsRefStr,
|
|
EnumIter,
|
|
FromRepr,
|
|
Serialize,
|
|
Deserialize,
|
|
)]
|
|
#[cfg_attr(feature = "tsify", derive(Tsify))]
|
|
#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))]
|
|
pub enum Species {
|
|
None,
|
|
#[default]
|
|
Human,
|
|
Zrilian,
|
|
Robot,
|
|
}
|
|
}
|
|
|
|
#[must_use]
|
|
pub fn build_prefab_database() -> Option<BTreeMap<i32, templates::ObjectTemplate>> {
|
|
#[cfg(feature = "prefab_database")]
|
|
let map = Some(database::build_prefab_database());
|
|
#[cfg(not(feature = "prefab_database"))]
|
|
let map = None;
|
|
|
|
map
|
|
}
|
|
|
|
pub fn build_reagent_database() -> Option<BTreeMap<u8, templates::Reagent>> {
|
|
#[cfg(feature = "reagent_database")]
|
|
let map = Some(database::build_reagent_database());
|
|
#[cfg(not(feature = "reagent_database"))]
|
|
let map = None;
|
|
|
|
map
|
|
}
|
|
|
|
pub mod database {
|
|
#[cfg(feature = "prefab_database")]
|
|
mod prefab_map;
|
|
#[cfg(feature = "prefab_database")]
|
|
pub use prefab_map::build_prefab_database;
|
|
#[cfg(feature = "reagent_database")]
|
|
mod reagent_map;
|
|
#[cfg(feature = "reagent_database")]
|
|
pub use reagent_map::build_reagent_database;
|
|
}
|