59 lines
1.7 KiB
Scala

package ocelot.desktop.node.nodes
import ocelot.desktop.geometry.Rect2D
import ocelot.desktop.graphics.Graphics
import ocelot.desktop.node.Node.{HighlightThickness, NoHighlightSize}
import ocelot.desktop.node.{LabeledEntityNode, ShiftClickNode, SyncedInventoryEntityNode}
import ocelot.desktop.ui.event.ClickEvent
import ocelot.desktop.ui.event.handlers.DiskActivityHandler
import ocelot.desktop.ui.widget.contextmenu.ContextMenu
import ocelot.desktop.util.DiskDriveAware
import totoro.ocelot.brain.entity.FloppyDiskDrive
class DiskDriveNode(entity: FloppyDiskDrive)
extends SyncedInventoryEntityNode(entity)
with LabeledEntityNode
with DiskDriveAware
with DiskActivityHandler
with ShiftClickNode
{
override def icon: String = "nodes/disk-drive/Default"
override protected val canOpen = true
override def setupContextMenu(menu: ContextMenu, event: ClickEvent): Unit = {
addEjectContextMenuEntry(menu)
menu.addSeparator()
super.setupContextMenu(menu, event)
}
override def draw(g: Graphics): Unit = {
super.draw(g)
drawActivityAndFloppy(
g,
Rect2D(
position.x + HighlightThickness,
position.y + HighlightThickness,
NoHighlightSize,
NoHighlightSize
),
"nodes/disk-drive/"
)
}
// ---------------------------- DiskDriveAware ----------------------------
override def floppyDiskDrive: FloppyDiskDrive = entity
// ---------------------------- ShiftClickNode ----------------------------
override protected def onShiftClick(event: ClickEvent): Unit = {
if (isFloppyItemPresent)
eject()
}
override protected def hoveredShiftStatusBarText: String = "Eject floppy"
}