Make BoomCardFxHandler a supertrait of ComputerAwareNode

This commit is contained in:
Fingercomp 2025-08-03 18:30:02 +03:00
parent 7ecb9a6fe7
commit a5a9b18771
No known key found for this signature in database
GPG Key ID: BBC71CEE45D86E37
4 changed files with 12 additions and 10 deletions

View File

@ -22,7 +22,7 @@ abstract class ComputerAwareNode(entity: Entity with Environment with WorkspaceA
with SyncedInventory with SyncedInventory
with DiskActivityHandler with DiskActivityHandler
with OcelotLogParticleNode with OcelotLogParticleNode
with SmokeParticleNode with BoomCardFxHandler
with ShiftClickNode { with ShiftClickNode {
private lazy val soundCardSounds: (SoundStream, SoundSource) = Audio.newStream(SoundCategory.Records) private lazy val soundCardSounds: (SoundStream, SoundSource) = Audio.newStream(SoundCategory.Records)

View File

@ -4,7 +4,7 @@ import ocelot.desktop.color.Color
import ocelot.desktop.graphics.{Graphics, IconSource} import ocelot.desktop.graphics.{Graphics, IconSource}
import ocelot.desktop.inventory.item.SelfDestructingCardItem import ocelot.desktop.inventory.item.SelfDestructingCardItem
import ocelot.desktop.node.Node.HighlightThickness 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.event.ClickEvent
import ocelot.desktop.ui.widget.contextmenu.ContextMenu import ocelot.desktop.ui.widget.contextmenu.ContextMenu
import ocelot.desktop.ui.widget.slot._ import ocelot.desktop.ui.widget.slot._
@ -18,8 +18,7 @@ import totoro.ocelot.brain.util.Tier
class ComputerNode(val computerCase: Case) class ComputerNode(val computerCase: Case)
extends ComputerAwareNode(computerCase) extends ComputerAwareNode(computerCase)
with AudibleComputerAware with AudibleComputerAware
with WindowedNode[ComputerWindow] with WindowedNode[ComputerWindow] {
with BoomCardFxHandler {
override val iconSource: IconSource = IconSource.Nodes.Computer.Default override val iconSource: IconSource = IconSource.Nodes.Computer.Default
override def iconColor: Color = TierColor.get(computerCase.tier) override def iconColor: Color = TierColor.get(computerCase.tier)

View File

@ -20,6 +20,7 @@ class MicrocontrollerNode(val microcontroller: Microcontroller)
with ComputerAware with ComputerAware
with DefaultSlotItemsFillable with DefaultSlotItemsFillable
with WindowedNode[ComputerWindow] { with WindowedNode[ComputerWindow] {
override val iconSource: IconSource = IconSource.Nodes.Microcontroller.Default override val iconSource: IconSource = IconSource.Nodes.Microcontroller.Default
override def setupContextMenu(menu: ContextMenu, event: ClickEvent): Unit = { 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 computerType: ComputerType = ComputerType.Microcontroller
override def brainInventory: Inventory = microcontroller.inventory.owner 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 = { override def addSlotsBasedOnTier(): Unit = {
microcontroller.tier match { microcontroller.tier match {
case Tier.One => case Tier.One =>

View File

@ -6,7 +6,7 @@ import ocelot.desktop.inventory.Item
import ocelot.desktop.inventory.item.{DiskDriveMountableItem, SelfDestructingCardItem, ServerItem} import ocelot.desktop.inventory.item.{DiskDriveMountableItem, SelfDestructingCardItem, ServerItem}
import ocelot.desktop.inventory.traits.RackMountableItem import ocelot.desktop.inventory.traits.RackMountableItem
import ocelot.desktop.node.Node.{HighlightThickness, NoHighlightSize, Size, TexelCount} 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.event.{BrainEvent, ClickEvent}
import ocelot.desktop.ui.widget.contextmenu.{ContextMenu, ContextMenuEntry} import ocelot.desktop.ui.widget.contextmenu.{ContextMenu, ContextMenuEntry}
import ocelot.desktop.util.DrawUtils import ocelot.desktop.util.DrawUtils
@ -17,11 +17,7 @@ import totoro.ocelot.brain.event.NetworkActivityEvent
import totoro.ocelot.brain.network import totoro.ocelot.brain.network
import totoro.ocelot.brain.util.Direction import totoro.ocelot.brain.util.Direction
class RackNode(val rack: Rack) class RackNode(val rack: Rack) extends ComputerAwareNode(rack) with WindowedNode[RackWindow] {
extends ComputerAwareNode(rack)
with WindowedNode[RackWindow]
with BoomCardFxHandler {
override val iconSource: IconSource = IconSource.Nodes.Rack.Empty override val iconSource: IconSource = IconSource.Nodes.Rack.Empty
override def exposeAddress = false override def exposeAddress = false