Files
ic10emu/stationeers_data/src/lib.rs

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;
}