package ocelot.desktop.node import ocelot.desktop.inventory.SyncedInventory import ocelot.desktop.inventory.traits.ComponentItem import ocelot.desktop.ui.event.Event import totoro.ocelot.brain.entity.traits.{Entity, Environment} abstract class SyncedInventoryEntityNode(entity: Entity with Environment) extends EntityNode(entity) with SyncedInventory { override def shouldReceiveEventsFor(address: String): Boolean = super.shouldReceiveEventsFor(address) || inventoryIterator .flatMap(_.get) .collect { case item: ComponentItem => item } .exists(_.component.node.address == address) override def handleEvent(event: Event): Unit = { super.handleEvent(event) for (slot <- inventoryIterator; item <- slot.get) { item.handleEvent(event) } } }