mirror of
https://gitlab.com/cc-ru/ocelot/ocelot-desktop.git
synced 2025-12-20 02:59:19 +01:00
59 lines
2.0 KiB
Scala
59 lines
2.0 KiB
Scala
package ocelot.desktop.node.nodes
|
|
|
|
import ocelot.desktop.color.IntColor
|
|
import ocelot.desktop.graphics.Graphics
|
|
import ocelot.desktop.node.Node
|
|
import ocelot.desktop.ui.widget.slot.FloppySlot
|
|
import ocelot.desktop.windows.DiskDriveWindow
|
|
import totoro.ocelot.brain.entity.FloppyDiskDrive
|
|
import totoro.ocelot.brain.entity.traits.Floppy
|
|
import totoro.ocelot.brain.loot.Loot
|
|
import totoro.ocelot.brain.util.DyeColor
|
|
|
|
class DiskDriveNode(val diskDrive: FloppyDiskDrive) extends Node(diskDrive) {
|
|
val slot: FloppySlot = new FloppySlot(diskDrive.inventory(0))
|
|
slot.item = floppy.getOrElse(Loot.OpenOsFloppy.create())
|
|
|
|
override def icon: String = "nodes/DiskDrive"
|
|
|
|
override protected val canOpen = true
|
|
|
|
private val colorMap: Map[DyeColor, Int] = Map(
|
|
DyeColor.BLACK -> 0x444444, // 0x1E1B1B
|
|
DyeColor.RED -> 0xB3312C,
|
|
DyeColor.GREEN -> 0x339911, // 0x3B511A
|
|
DyeColor.BROWN -> 0x51301A,
|
|
DyeColor.BLUE -> 0x6666FF, // 0x253192
|
|
DyeColor.PURPLE -> 0x7B2FBE,
|
|
DyeColor.CYAN -> 0x66FFFF, // 0x287697
|
|
DyeColor.SILVER -> 0xABABAB,
|
|
DyeColor.GRAY -> 0x666666, // 0x434343
|
|
DyeColor.PINK -> 0xD88198,
|
|
DyeColor.LIME -> 0x66FF66, // 0x41CD34
|
|
DyeColor.YELLOW -> 0xFFFF66, // 0xDECF2A
|
|
DyeColor.LIGHT_BLUE -> 0xAAAAFF, // 0x6689D3
|
|
DyeColor.MAGENTA -> 0xC354CD,
|
|
DyeColor.ORANGE -> 0xEB8844,
|
|
DyeColor.WHITE -> 0xF0F0F0
|
|
)
|
|
|
|
override def draw(g: Graphics): Unit = {
|
|
super.draw(g)
|
|
|
|
if (System.currentTimeMillis() - diskDrive.lastDiskAccess < 400 && Math.random() > 0.1)
|
|
g.sprite("nodes/DiskDriveActivity", position.x + 2, position.y + 2, size.width - 4, size.height - 4)
|
|
|
|
if (slot.item.isDefined)
|
|
g.sprite("nodes/DiskDriveFloppy", position.x + 2, position.y + 2, size.width - 4, size.height - 4, IntColor(colorMap(slot.item.get.color)))
|
|
}
|
|
|
|
override val window: Option[DiskDriveWindow] = Some(new DiskDriveWindow(this))
|
|
|
|
private def floppy: Option[Floppy] = {
|
|
diskDrive.inventory(0).get match {
|
|
case Some(floppy: Floppy) => Some(floppy)
|
|
case _ => None
|
|
}
|
|
}
|
|
}
|