feat(slots UI): better slot UI

This commit is contained in:
Rachel Powers
2024-04-24 21:19:13 -07:00
parent eb4463c8ab
commit c87d3f8bd8
10 changed files with 205 additions and 309 deletions

View File

@@ -3,7 +3,7 @@ mod utils;
mod types;
use ic10emu::{
device::{Device, DeviceTemplate},
device::{Device, DeviceTemplate, SlotOccupantTemplate},
grammar::{LogicType, SlotLogicType},
vm::{FrozenVM, VMError, VM},
};
@@ -489,6 +489,12 @@ impl VMRef {
Ok(self.vm.borrow_mut().remove_device(id)?)
}
#[wasm_bindgen(js_name = "setSlotOccupant", skip_typescript)]
pub fn set_slot_occupant(&self, id: u32, index: usize, template: JsValue) -> Result<(), JsError> {
let template: SlotOccupantTemplate = serde_wasm_bindgen::from_value(template)?;
Ok(self.vm.borrow_mut().set_slot_occupant(id, index, template)?)
}
#[wasm_bindgen(js_name = "saveVMState", skip_typescript)]
pub fn save_vm_state(&self) -> JsValue {
let state = self.vm.borrow().save_vm_state();

View File

@@ -177,6 +177,7 @@ export interface FrozenVM {
export interface VMRef {
addDeviceFromTemplate(template: DeviceTemplate): number;
setSlotOccupant(id: number, index: number, template: SlotOccupantTemplate);
saveVMState(): FrozenVM;
restoreVMState(state: FrozenVM): void;
}