From a5a9b187719f2f39b6207bae4fe72466f765b9d0 Mon Sep 17 00:00:00 2001 From: Fingercomp Date: Sun, 3 Aug 2025 18:30:02 +0300 Subject: [PATCH] Make BoomCardFxHandler a supertrait of ComputerAwareNode --- .../scala/ocelot/desktop/node/ComputerAwareNode.scala | 2 +- .../scala/ocelot/desktop/node/nodes/ComputerNode.scala | 5 ++--- .../ocelot/desktop/node/nodes/MicrocontrollerNode.scala | 7 +++++++ src/main/scala/ocelot/desktop/node/nodes/RackNode.scala | 8 ++------ 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/scala/ocelot/desktop/node/ComputerAwareNode.scala b/src/main/scala/ocelot/desktop/node/ComputerAwareNode.scala index c63c772..6946fd4 100644 --- a/src/main/scala/ocelot/desktop/node/ComputerAwareNode.scala +++ b/src/main/scala/ocelot/desktop/node/ComputerAwareNode.scala @@ -22,7 +22,7 @@ abstract class ComputerAwareNode(entity: Entity with Environment with WorkspaceA with SyncedInventory with DiskActivityHandler with OcelotLogParticleNode - with SmokeParticleNode + with BoomCardFxHandler with ShiftClickNode { private lazy val soundCardSounds: (SoundStream, SoundSource) = Audio.newStream(SoundCategory.Records) diff --git a/src/main/scala/ocelot/desktop/node/nodes/ComputerNode.scala b/src/main/scala/ocelot/desktop/node/nodes/ComputerNode.scala index ae96c86..3ee9500 100644 --- a/src/main/scala/ocelot/desktop/node/nodes/ComputerNode.scala +++ b/src/main/scala/ocelot/desktop/node/nodes/ComputerNode.scala @@ -4,7 +4,7 @@ import ocelot.desktop.color.Color import ocelot.desktop.graphics.{Graphics, IconSource} import ocelot.desktop.inventory.item.SelfDestructingCardItem import ocelot.desktop.node.Node.HighlightThickness -import ocelot.desktop.node.{BoomCardFxHandler, ComputerAwareNode, WindowedNode} +import ocelot.desktop.node.{ComputerAwareNode, WindowedNode} import ocelot.desktop.ui.event.ClickEvent import ocelot.desktop.ui.widget.contextmenu.ContextMenu import ocelot.desktop.ui.widget.slot._ @@ -18,8 +18,7 @@ import totoro.ocelot.brain.util.Tier class ComputerNode(val computerCase: Case) extends ComputerAwareNode(computerCase) with AudibleComputerAware - with WindowedNode[ComputerWindow] - with BoomCardFxHandler { + with WindowedNode[ComputerWindow] { override val iconSource: IconSource = IconSource.Nodes.Computer.Default override def iconColor: Color = TierColor.get(computerCase.tier) diff --git a/src/main/scala/ocelot/desktop/node/nodes/MicrocontrollerNode.scala b/src/main/scala/ocelot/desktop/node/nodes/MicrocontrollerNode.scala index 634a063..7110172 100644 --- a/src/main/scala/ocelot/desktop/node/nodes/MicrocontrollerNode.scala +++ b/src/main/scala/ocelot/desktop/node/nodes/MicrocontrollerNode.scala @@ -20,6 +20,7 @@ class MicrocontrollerNode(val microcontroller: Microcontroller) with ComputerAware with DefaultSlotItemsFillable with WindowedNode[ComputerWindow] { + override val iconSource: IconSource = IconSource.Nodes.Microcontroller.Default override def setupContextMenu(menu: ContextMenu, event: ClickEvent): Unit = { @@ -67,6 +68,12 @@ class MicrocontrollerNode(val microcontroller: Microcontroller) override def computerType: ComputerType = ComputerType.Microcontroller override def brainInventory: Inventory = microcontroller.inventory.owner + override protected def selfDestructingCards: IterableOnce[SelfDestructingCardItem] = { + inventoryIterator.flatMap(_.get).collect { + case item: SelfDestructingCardItem => item + } + } + override def addSlotsBasedOnTier(): Unit = { microcontroller.tier match { case Tier.One => diff --git a/src/main/scala/ocelot/desktop/node/nodes/RackNode.scala b/src/main/scala/ocelot/desktop/node/nodes/RackNode.scala index d09c646..4b1e4ab 100644 --- a/src/main/scala/ocelot/desktop/node/nodes/RackNode.scala +++ b/src/main/scala/ocelot/desktop/node/nodes/RackNode.scala @@ -6,7 +6,7 @@ import ocelot.desktop.inventory.Item import ocelot.desktop.inventory.item.{DiskDriveMountableItem, SelfDestructingCardItem, ServerItem} import ocelot.desktop.inventory.traits.RackMountableItem import ocelot.desktop.node.Node.{HighlightThickness, NoHighlightSize, Size, TexelCount} -import ocelot.desktop.node.{BoomCardFxHandler, ComputerAwareNode, NodePort, WindowedNode} +import ocelot.desktop.node.{ComputerAwareNode, NodePort, WindowedNode} import ocelot.desktop.ui.event.{BrainEvent, ClickEvent} import ocelot.desktop.ui.widget.contextmenu.{ContextMenu, ContextMenuEntry} import ocelot.desktop.util.DrawUtils @@ -17,11 +17,7 @@ import totoro.ocelot.brain.event.NetworkActivityEvent import totoro.ocelot.brain.network import totoro.ocelot.brain.util.Direction -class RackNode(val rack: Rack) - extends ComputerAwareNode(rack) - with WindowedNode[RackWindow] - with BoomCardFxHandler { - +class RackNode(val rack: Rack) extends ComputerAwareNode(rack) with WindowedNode[RackWindow] { override val iconSource: IconSource = IconSource.Nodes.Rack.Empty override def exposeAddress = false