refactor(vm): update prefab database with new data

This commit is contained in:
Rachel Powers
2024-05-20 22:18:12 -07:00
parent 4346bc5302
commit bc84200105
6 changed files with 58299 additions and 128 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -14,27 +14,45 @@ pub enum ObjectTemplate {
StructureSlots(StructureSlotsTemplate),
StructureLogic(StructureLogicTemplate),
StructureLogicDevice(StructureLogicDeviceTemplate),
StructureLogicDeviceConsumer(StructureLogicDeviceConsumerTemplate),
StructureLogicDeviceMemory(StructureLogicDeviceMemoryTemplate),
StructureLogicDeviceConsumerMemory(StructureLogicDeviceConsumerMemoryTemplate),
StructureCircuitHolder(StructureCircuitHolderTemplate),
Item(ItemTemplate),
ItemSlots(ItemSlotsTemplate),
ItemConsumer(ItemConsumerTemplate),
ItemLogic(ItemLogicTemplate),
ItemLogicMemory(ItemLogicMemoryTemplate),
ItemCircuitHolder(ItemCircuitHolderTemplate),
ItemSuit(ItemSuitTemplate),
ItemSuitLogic(ItemSuitLogicTemplate),
ItemSuitCircuitHolder(ItemSuitCircuitHolderTemplate),
}
#[allow(dead_code)]
impl ObjectTemplate {
#[allow(clippy::must_use_candidate)]
pub fn prefab(&self) -> &PrefabInfo {
#[allow(clippy::enum_glob_use)]
use ObjectTemplate::*;
match self {
Structure(s) => &s.prefab,
StructureSlots(s) => &s.prefab,
StructureLogic(s) => &s.prefab,
StructureLogicDevice(s) => &s.prefab,
StructureLogicDeviceConsumer(s) => &s.prefab,
StructureLogicDeviceMemory(s) => &s.prefab,
StructureLogicDeviceConsumerMemory(s) => &s.prefab,
StructureCircuitHolder(s) => &s.prefab,
Item(i) => &i.prefab,
ItemSlots(i) => &i.prefab,
ItemConsumer(i) => &i.prefab,
ItemLogic(i) => &i.prefab,
ItemLogicMemory(i) => &i.prefab,
ItemCircuitHolder(i) => &i.prefab,
ItemSuit(i) => &i.prefab,
ItemSuitLogic(i) => &i.prefab,
ItemSuitCircuitHolder(i) => &i.prefab,
}
}
}
@@ -62,6 +80,11 @@ impl From<StructureLogicDeviceTemplate> for ObjectTemplate {
Self::StructureLogicDevice(value)
}
}
impl From<StructureLogicDeviceConsumerTemplate> for ObjectTemplate {
fn from(value: StructureLogicDeviceConsumerTemplate) -> Self {
Self::StructureLogicDeviceConsumer(value)
}
}
impl From<StructureLogicDeviceMemoryTemplate> for ObjectTemplate {
fn from(value: StructureLogicDeviceMemoryTemplate) -> Self {
@@ -69,6 +92,12 @@ impl From<StructureLogicDeviceMemoryTemplate> for ObjectTemplate {
}
}
impl From<StructureLogicDeviceConsumerMemoryTemplate> for ObjectTemplate {
fn from(value: StructureLogicDeviceConsumerMemoryTemplate) -> Self {
Self::StructureLogicDeviceConsumerMemory(value)
}
}
impl From<ItemTemplate> for ObjectTemplate {
fn from(value: ItemTemplate) -> Self {
Self::Item(value)
@@ -81,6 +110,12 @@ impl From<ItemSlotsTemplate> for ObjectTemplate {
}
}
impl From<ItemConsumerTemplate> for ObjectTemplate {
fn from(value: ItemConsumerTemplate) -> Self {
Self::ItemConsumer(value)
}
}
impl From<ItemLogicTemplate> for ObjectTemplate {
fn from(value: ItemLogicTemplate) -> Self {
Self::ItemLogic(value)
@@ -93,6 +128,36 @@ impl From<ItemLogicMemoryTemplate> for ObjectTemplate {
}
}
impl From<ItemSuitCircuitHolderTemplate> for ObjectTemplate {
fn from(value: ItemSuitCircuitHolderTemplate) -> Self {
Self::ItemSuitCircuitHolder(value)
}
}
impl From<ItemSuitTemplate> for ObjectTemplate {
fn from(value: ItemSuitTemplate) -> Self {
Self::ItemSuit(value)
}
}
impl From<ItemSuitLogicTemplate> for ObjectTemplate {
fn from(value: ItemSuitLogicTemplate) -> Self {
Self::ItemSuitLogic(value)
}
}
impl From<ItemCircuitHolderTemplate> for ObjectTemplate {
fn from(value: ItemCircuitHolderTemplate) -> Self {
Self::ItemCircuitHolder(value)
}
}
impl From<StructureCircuitHolderTemplate> for ObjectTemplate {
fn from(value: StructureCircuitHolderTemplate) -> Self {
Self::StructureCircuitHolder(value)
}
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)]
pub struct PrefabInfo {
pub prefab_name: String,
@@ -133,6 +198,7 @@ pub struct ConnectionInfo {
pub role: ConnectionRole,
}
#[allow(clippy::struct_excessive_bools)]
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct DeviceInfo {
pub connection_list: Vec<ConnectionInfo>,
@@ -147,6 +213,12 @@ pub struct DeviceInfo {
pub has_reagents: bool,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct ConsumerInfo {
pub consumed_resouces: Vec<String>,
pub processed_reagents: Vec<i32>,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Hash, Serialize, Deserialize)]
pub struct StructureInfo {
pub small_grid: bool,
@@ -166,16 +238,37 @@ pub struct MemoryInfo {
pub memory_size: u32,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct ThermalInfo {
pub convection_factor: f32,
pub radiation_factor: f32,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct InternalAtmoInfo {
pub volume: f32,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct SuitInfo {
pub hygine_reduction_multiplier: f32,
pub waste_max_pressure: f32,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct StructureTemplate {
pub prefab: PrefabInfo,
pub structure: StructureInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct StructureSlotsTemplate {
pub prefab: PrefabInfo,
pub structure: StructureInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub slots: Vec<SlotInfo>,
}
@@ -183,6 +276,8 @@ pub struct StructureSlotsTemplate {
pub struct StructureLogicTemplate {
pub prefab: PrefabInfo,
pub structure: StructureInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub logic: LogicInfo,
pub slots: Vec<SlotInfo>,
}
@@ -191,38 +286,94 @@ pub struct StructureLogicTemplate {
pub struct StructureLogicDeviceTemplate {
pub prefab: PrefabInfo,
pub structure: StructureInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub logic: LogicInfo,
pub slots: Vec<SlotInfo>,
pub device: DeviceInfo,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct StructureLogicDeviceConsumerTemplate {
pub prefab: PrefabInfo,
pub structure: StructureInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub logic: LogicInfo,
pub slots: Vec<SlotInfo>,
pub device: DeviceInfo,
pub consumer_info: ConsumerInfo,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct StructureLogicDeviceMemoryTemplate {
pub prefab: PrefabInfo,
pub structure: StructureInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub logic: LogicInfo,
pub slots: Vec<SlotInfo>,
pub device: DeviceInfo,
pub memory: MemoryInfo,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct StructureCircuitHolderTemplate {
pub prefab: PrefabInfo,
pub structure: StructureInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub logic: LogicInfo,
pub slots: Vec<SlotInfo>,
pub device: DeviceInfo,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct StructureLogicDeviceConsumerMemoryTemplate {
pub prefab: PrefabInfo,
pub structure: StructureInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub logic: LogicInfo,
pub slots: Vec<SlotInfo>,
pub device: DeviceInfo,
pub consumer_info: ConsumerInfo,
pub memory: MemoryInfo,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct ItemTemplate {
pub prefab: PrefabInfo,
pub item: ItemInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct ItemSlotsTemplate {
pub prefab: PrefabInfo,
pub item: ItemInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub slots: Vec<SlotInfo>,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct ItemConsumerTemplate {
pub prefab: PrefabInfo,
pub item: ItemInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub slots: Vec<SlotInfo>,
pub consumer_info: ConsumerInfo,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct ItemLogicTemplate {
pub prefab: PrefabInfo,
pub item: ItemInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub logic: LogicInfo,
pub slots: Vec<SlotInfo>,
}
@@ -231,7 +382,52 @@ pub struct ItemLogicTemplate {
pub struct ItemLogicMemoryTemplate {
pub prefab: PrefabInfo,
pub item: ItemInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub logic: LogicInfo,
pub slots: Vec<SlotInfo>,
pub memory: MemoryInfo,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct ItemCircuitHolderTemplate {
pub prefab: PrefabInfo,
pub item: ItemInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub logic: LogicInfo,
pub slots: Vec<SlotInfo>,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct ItemSuitTemplate {
pub prefab: PrefabInfo,
pub item: ItemInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub slots: Vec<SlotInfo>,
pub suit_info: SuitInfo,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct ItemSuitLogicTemplate {
pub prefab: PrefabInfo,
pub item: ItemInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub logic: LogicInfo,
pub slots: Vec<SlotInfo>,
pub suit_info: SuitInfo,
}
#[derive(Clone, Debug, PartialEq, PartialOrd, Serialize, Deserialize)]
pub struct ItemSuitCircuitHolderTemplate {
pub prefab: PrefabInfo,
pub item: ItemInfo,
pub thermal_info: Option<ThermalInfo>,
pub internal_atmo_info: Option<InternalAtmoInfo>,
pub logic: LogicInfo,
pub slots: Vec<SlotInfo>,
pub suit_info: SuitInfo,
pub memory: MemoryInfo,
}