import Component from '@/ecs/component.js'; export default class Wielder extends Component { instanceFromSchema() { const {ecs} = this; return class WielderInstance extends super.instanceFromSchema() { activeItem() { const {Inventory, Wielder} = ecs.get(this.entity); return Inventory.item(Wielder.activeSlot + 1); } useActiveItem([state, where]) { const entity = ecs.get(this.entity); const {Ticking} = entity; const activeItem = this.activeItem(); if (activeItem) { const {startInstance, stopInstance} = activeItem.scripts; let script = state ? startInstance : stopInstance; if (script) { script = script.clone(); script.context.ecs = ecs; script.context.item = activeItem; script.context.where = where; script.context.wielder = entity; Ticking.add(script.ticker()); } } } } } static properties = { activeSlot: {type: 'uint16'}, }; }