refactor(vm): rework object freazing
- let vm carry object dtabase - seperate frozen object info and templates
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use strum::{AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr};
|
||||
use super::script_enums::{LogicSlotType, LogicType};
|
||||
use super::script::{LogicSlotType, LogicType};
|
||||
#[derive(
|
||||
Debug,
|
||||
Display,
|
||||
@@ -4,10 +4,10 @@ pub mod templates;
|
||||
pub mod enums {
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use std::fmt::Display;
|
||||
use strum::{AsRefStr, EnumIter, EnumString};
|
||||
use strum::{AsRefStr, EnumIter, EnumString, FromRepr};
|
||||
|
||||
pub mod basic_enums;
|
||||
pub mod script_enums;
|
||||
pub mod basic;
|
||||
pub mod script;
|
||||
pub mod prefabs;
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -46,6 +46,7 @@ pub mod enums {
|
||||
Deserialize,
|
||||
EnumIter,
|
||||
AsRefStr,
|
||||
FromRepr,
|
||||
EnumString,
|
||||
)]
|
||||
pub enum ConnectionType {
|
||||
@@ -77,6 +78,7 @@ pub mod enums {
|
||||
Deserialize,
|
||||
EnumIter,
|
||||
AsRefStr,
|
||||
FromRepr,
|
||||
EnumString,
|
||||
)]
|
||||
pub enum ConnectionRole {
|
||||
@@ -89,16 +91,45 @@ pub mod enums {
|
||||
#[default]
|
||||
None,
|
||||
}
|
||||
|
||||
|
||||
#[derive(
|
||||
Debug,
|
||||
Default,
|
||||
Clone,
|
||||
Copy,
|
||||
PartialEq,
|
||||
PartialOrd,
|
||||
Eq,
|
||||
Ord,
|
||||
Hash,
|
||||
Serialize,
|
||||
Deserialize,
|
||||
EnumIter,
|
||||
AsRefStr,
|
||||
FromRepr,
|
||||
EnumString,
|
||||
)]
|
||||
#[repr(u32)]
|
||||
pub enum MachineTier {
|
||||
#[default]
|
||||
Undefined = 0,
|
||||
TierOne = 1,
|
||||
TierTwo = 2,
|
||||
TierThree = 3,
|
||||
#[serde(other)]
|
||||
Max,
|
||||
}
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn build_prefab_database() -> Option<BTreeMap<i32, templates::ObjectTemplate>> {
|
||||
#[cfg(feature = "prefab_database")]
|
||||
let _map = Some(database::build_prefab_database());
|
||||
let map = Some(database::build_prefab_database());
|
||||
#[cfg(not(feature = "prefab_database"))]
|
||||
let _map = None;
|
||||
let map = None;
|
||||
|
||||
_map
|
||||
map
|
||||
}
|
||||
|
||||
#[cfg(feature = "prefab_database")]
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
use crate::enums::{
|
||||
basic_enums::{Class as SlotClass, GasType, SortingClass},
|
||||
script_enums::{LogicSlotType, LogicType},
|
||||
ConnectionRole, ConnectionType, MemoryAccess,
|
||||
basic::{Class as SlotClass, GasType, SortingClass},
|
||||
script::{LogicSlotType, LogicType},
|
||||
ConnectionRole, ConnectionType, MachineTier, MemoryAccess,
|
||||
};
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
|
||||
@@ -219,6 +219,39 @@ pub struct ConsumerInfo {
|
||||
pub processed_reagents: Vec<i32>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
|
||||
pub struct RecipeRange {
|
||||
pub start: f64,
|
||||
pub stop: f64,
|
||||
pub is_valid: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
|
||||
pub struct RecipeGasMix {
|
||||
pub rule: i64,
|
||||
pub is_any: bool,
|
||||
pub is_any_to_remove: bool,
|
||||
pub reagents: BTreeMap<String, f64>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
|
||||
pub struct Recipe {
|
||||
pub tier: MachineTier,
|
||||
pub time: f64,
|
||||
pub energy: f64,
|
||||
pub temperature: RecipeRange,
|
||||
pub pressure: RecipeRange,
|
||||
pub required_mix: RecipeGasMix,
|
||||
pub count_types: i64,
|
||||
pub reagents: BTreeMap<String, f64>
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
|
||||
pub struct FabricatorInfo {
|
||||
pub tier: MachineTier,
|
||||
pub recipes: BTreeMap<String, Recipe>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)]
|
||||
pub struct StructureInfo {
|
||||
pub small_grid: bool,
|
||||
@@ -303,6 +336,7 @@ pub struct StructureLogicDeviceConsumerTemplate {
|
||||
pub slots: Vec<SlotInfo>,
|
||||
pub device: DeviceInfo,
|
||||
pub consumer_info: ConsumerInfo,
|
||||
pub fabricator_info: Option<FabricatorInfo>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
|
||||
@@ -338,6 +372,7 @@ pub struct StructureLogicDeviceConsumerMemoryTemplate {
|
||||
pub slots: Vec<SlotInfo>,
|
||||
pub device: DeviceInfo,
|
||||
pub consumer_info: ConsumerInfo,
|
||||
pub fabricator_info: Option<FabricatorInfo>,
|
||||
pub memory: MemoryInfo,
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user