refactor(vm): rework object freazing

- let vm carry object dtabase
 - seperate frozen object info and templates
This commit is contained in:
Rachel Powers
2024-05-23 23:04:42 -07:00
parent d79726a794
commit 24778b21b7
25 changed files with 18268 additions and 1262 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -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,

View File

@@ -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")]

View File

@@ -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,
}