refactor(vm): freeze concreet ic, add "humans", tsify feature
This commit is contained in:
@@ -14,17 +14,15 @@ use crate::{
|
||||
stationpedia::{self, Memory, Page, Stationpedia},
|
||||
};
|
||||
|
||||
use stationeers_data::{
|
||||
templates::{
|
||||
ConnectionInfo, ConsumerInfo, DeviceInfo, FabricatorInfo, Instruction, InternalAtmoInfo,
|
||||
ItemCircuitHolderTemplate, ItemConsumerTemplate, ItemInfo, ItemLogicMemoryTemplate,
|
||||
ItemLogicTemplate, ItemSlotsTemplate, ItemSuitCircuitHolderTemplate, ItemSuitLogicTemplate,
|
||||
ItemSuitTemplate, ItemTemplate, LogicInfo, MemoryInfo, ObjectTemplate, PrefabInfo, Recipe,
|
||||
RecipeGasMix, RecipeRange, SlotInfo, StructureCircuitHolderTemplate, StructureInfo,
|
||||
StructureLogicDeviceConsumerMemoryTemplate, StructureLogicDeviceConsumerTemplate,
|
||||
StructureLogicDeviceMemoryTemplate, StructureLogicDeviceTemplate, StructureLogicTemplate,
|
||||
StructureSlotsTemplate, StructureTemplate, SuitInfo, ThermalInfo,
|
||||
},
|
||||
use stationeers_data::templates::{
|
||||
ConnectionInfo, ConsumerInfo, DeviceInfo, FabricatorInfo, Instruction, InternalAtmoInfo,
|
||||
ItemCircuitHolderTemplate, ItemConsumerTemplate, ItemInfo, ItemLogicMemoryTemplate,
|
||||
ItemLogicTemplate, ItemSlotsTemplate, ItemSuitCircuitHolderTemplate, ItemSuitLogicTemplate,
|
||||
ItemSuitTemplate, ItemTemplate, LogicInfo, MemoryInfo, ObjectTemplate, PrefabInfo, Recipe,
|
||||
RecipeGasMix, RecipeRange, SlotInfo, StructureCircuitHolderTemplate, StructureInfo,
|
||||
StructureLogicDeviceConsumerMemoryTemplate, StructureLogicDeviceConsumerTemplate,
|
||||
StructureLogicDeviceMemoryTemplate, StructureLogicDeviceTemplate, StructureLogicTemplate,
|
||||
StructureSlotsTemplate, StructureTemplate, SuitInfo, ThermalInfo,
|
||||
};
|
||||
|
||||
#[allow(clippy::too_many_lines)]
|
||||
@@ -67,7 +65,8 @@ pub fn generate_database(
|
||||
| ItemLogicMemory(_)
|
||||
| ItemSuit(_)
|
||||
| ItemSuitLogic(_)
|
||||
| ItemSuitCircuitHolder(_) => None,
|
||||
| ItemSuitCircuitHolder(_)
|
||||
| Human(_) => None,
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
@@ -83,7 +82,8 @@ pub fn generate_database(
|
||||
| StructureCircuitHolder(_)
|
||||
| StructureLogicDeviceConsumer(_)
|
||||
| StructureLogicDeviceMemory(_)
|
||||
| StructureLogicDeviceConsumerMemory(_) => None,
|
||||
| StructureLogicDeviceConsumerMemory(_)
|
||||
| Human(_) => None,
|
||||
Item(_)
|
||||
| ItemSlots(_)
|
||||
| ItemConsumer(_)
|
||||
@@ -112,7 +112,8 @@ pub fn generate_database(
|
||||
| Item(_)
|
||||
| ItemSlots(_)
|
||||
| ItemSuit(_)
|
||||
| ItemConsumer(_) => None,
|
||||
| ItemConsumer(_)
|
||||
| Human(_) => None,
|
||||
ItemLogic(_)
|
||||
| ItemCircuitHolder(_)
|
||||
| ItemLogicMemory(_)
|
||||
@@ -138,7 +139,8 @@ pub fn generate_database(
|
||||
| ItemLogicMemory(_)
|
||||
| ItemSuit(_)
|
||||
| ItemSuitLogic(_)
|
||||
| ItemSuitCircuitHolder(_) => None,
|
||||
| ItemSuitCircuitHolder(_)
|
||||
| Human(_) => None,
|
||||
StructureLogicDevice(_)
|
||||
| StructureCircuitHolder(_)
|
||||
| StructureLogicDeviceMemory(_)
|
||||
|
||||
@@ -27,15 +27,13 @@ pub fn generate(
|
||||
.map(|enm| enm.enum_name.clone())
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let mut writer =
|
||||
std::io::BufWriter::new(std::fs::File::create(enums_path.join("script.rs"))?);
|
||||
let mut writer = std::io::BufWriter::new(std::fs::File::create(enums_path.join("script.rs"))?);
|
||||
write_repr_enum_use_header(&mut writer)?;
|
||||
for enm in enums.script_enums.values() {
|
||||
write_enum_listing(&mut writer, enm)?;
|
||||
}
|
||||
|
||||
let mut writer =
|
||||
std::io::BufWriter::new(std::fs::File::create(enums_path.join("basic.rs"))?);
|
||||
let mut writer = std::io::BufWriter::new(std::fs::File::create(enums_path.join("basic.rs"))?);
|
||||
write_repr_enum_use_header(&mut writer)?;
|
||||
let script_enums_in_basic = enums
|
||||
.script_enums
|
||||
@@ -327,6 +325,11 @@ fn write_repr_enum_use_header<T: std::io::Write>(
|
||||
use strum::{
|
||||
AsRefStr, Display, EnumIter, EnumProperty, EnumString, FromRepr,
|
||||
};
|
||||
|
||||
#[cfg(feature = "tsify")]
|
||||
use tsify::Tsify;
|
||||
#[cfg(feature = "tsify")]
|
||||
use wasm_bindgen::prelude::*;
|
||||
}
|
||||
)?;
|
||||
Ok(())
|
||||
@@ -341,11 +344,7 @@ fn write_repr_basic_use_header<T: std::io::Write>(
|
||||
.map(|enm| Ident::new(&enm.enum_name.to_case(Case::Pascal), Span::call_site()))
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
write!(
|
||||
writer,
|
||||
"{}",
|
||||
quote! {use super::script::{ #(#enums),*};},
|
||||
)?;
|
||||
write!(writer, "{}", quote! {use super::script::{ #(#enums),*};},)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -434,6 +433,8 @@ where
|
||||
"{}",
|
||||
quote! {
|
||||
#[derive(#(#derives),*)]
|
||||
#[cfg_attr(feature = "tsify", derive(Tsify))]
|
||||
#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))]
|
||||
#additional_strum
|
||||
#[repr(#repr)]
|
||||
pub enum #name {
|
||||
|
||||
@@ -56,6 +56,11 @@ fn write_instructions_enum<T: std::io::Write>(
|
||||
Display, EnumIter, EnumProperty, EnumString, FromRepr,
|
||||
};
|
||||
use crate::vm::object::traits::Programmable;
|
||||
|
||||
#[cfg(feature = "tsify")]
|
||||
use tsify::Tsify;
|
||||
#[cfg(feature = "tsify")]
|
||||
use wasm_bindgen::prelude::*;
|
||||
}
|
||||
)?;
|
||||
|
||||
@@ -78,10 +83,12 @@ fn write_instructions_enum<T: std::io::Write>(
|
||||
writer,
|
||||
"{}",
|
||||
quote::quote! {#[derive(Debug, Display, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Serialize, Deserialize)]
|
||||
#[derive(EnumIter, EnumString, EnumProperty, FromRepr)]
|
||||
#[strum(use_phf, serialize_all = "lowercase")]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
pub enum InstructionOp {
|
||||
#[derive(EnumIter, EnumString, EnumProperty, FromRepr)]
|
||||
#[cfg_attr(feature = "tsify", derive(Tsify))]
|
||||
#[cfg_attr(feature = "tsify", tsify(into_wasm_abi, from_wasm_abi))]
|
||||
#[strum(use_phf, serialize_all = "lowercase")]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
pub enum InstructionOp {
|
||||
Nop,
|
||||
#(#inst_variants)*
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ use stationeers_data::enums::MachineTier;
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
|
||||
#[serde(rename = "Stationpedia", deny_unknown_fields)]
|
||||
#[serde(rename = "Stationpedia")]
|
||||
pub struct Stationpedia {
|
||||
pub pages: Vec<Page>,
|
||||
pub reagents: BTreeMap<String, Reagent>,
|
||||
|
||||
Reference in New Issue
Block a user