mirror of
https://gitlab.com/cc-ru/ocelot/ocelot-desktop.git
synced 2025-12-20 02:59:19 +01:00
Extended item tooltips with additional info
This commit is contained in:
parent
6c1d41671a
commit
78c022dd14
@ -1 +1 @@
|
||||
Subproject commit d4d88f9680ce3b54aaf27acc50a91f1065187f16
|
||||
Subproject commit f0352200bd0fc9b7d5e73af910a8f15bac1ae952
|
||||
@ -1,14 +1,14 @@
|
||||
package ocelot.desktop.inventory.item
|
||||
|
||||
import ocelot.desktop.graphics.IconSource
|
||||
import ocelot.desktop.inventory.traits.{ComponentItem, CpuLikeItem, PersistableItem}
|
||||
import ocelot.desktop.inventory.traits.{ComponentItem, CpuLikeItem, GpuLikeItem, PersistableItem}
|
||||
import ocelot.desktop.inventory.{Item, ItemFactory, ItemRecoverer}
|
||||
import totoro.ocelot.brain.entity.APU
|
||||
import totoro.ocelot.brain.entity.traits.{Entity, GenericCPU}
|
||||
import totoro.ocelot.brain.entity.traits.{Entity, GenericCPU, GenericGPU}
|
||||
import totoro.ocelot.brain.util.Tier.Tier
|
||||
|
||||
class ApuItem(val apu: APU) extends Item with ComponentItem with PersistableItem with CpuLikeItem {
|
||||
override def component: Entity with GenericCPU = apu
|
||||
class ApuItem(val apu: APU) extends Item with ComponentItem with PersistableItem with CpuLikeItem with GpuLikeItem {
|
||||
override def component: Entity with GenericCPU with GenericGPU = apu
|
||||
|
||||
override def factory: ApuItem.Factory = new ApuItem.Factory(apu.tier)
|
||||
}
|
||||
|
||||
@ -3,12 +3,20 @@ package ocelot.desktop.inventory.item
|
||||
import ocelot.desktop.graphics.IconSource
|
||||
import ocelot.desktop.inventory.traits.{CardItem, ComponentItem, PersistableItem}
|
||||
import ocelot.desktop.inventory.{Item, ItemFactory, ItemRecoverer}
|
||||
import ocelot.desktop.ui.widget.tooltip.ItemTooltip
|
||||
import totoro.ocelot.brain.Settings
|
||||
import totoro.ocelot.brain.entity.DataCard
|
||||
import totoro.ocelot.brain.entity.traits.{Entity, Environment}
|
||||
import totoro.ocelot.brain.util.Tier
|
||||
import totoro.ocelot.brain.util.Tier.Tier
|
||||
|
||||
abstract class DataCardItem extends Item with ComponentItem with PersistableItem with CardItem
|
||||
abstract class DataCardItem extends Item with ComponentItem with PersistableItem with CardItem {
|
||||
override def fillTooltip(tooltip: ItemTooltip): Unit = {
|
||||
super.fillTooltip(tooltip)
|
||||
tooltip.addLine(s"Soft limit (${Settings.get.dataCardTimeout} sec slowdown): ${Settings.get.dataCardSoftLimit} bytes")
|
||||
tooltip.addLine(s"Hard limit (fail): ${Settings.get.dataCardHardLimit} bytes")
|
||||
}
|
||||
}
|
||||
|
||||
object DataCardItem {
|
||||
abstract class Factory extends ItemFactory {
|
||||
|
||||
@ -3,7 +3,9 @@ package ocelot.desktop.inventory.item
|
||||
import ocelot.desktop.graphics.IconSource
|
||||
import ocelot.desktop.inventory.traits.RackMountableItem
|
||||
import ocelot.desktop.inventory.{ItemFactory, ItemRecoverer}
|
||||
import ocelot.desktop.ui.widget.tooltip.ItemTooltip
|
||||
import ocelot.desktop.util.DiskDriveAware
|
||||
import totoro.ocelot.brain.entity.traits.Floppy
|
||||
import totoro.ocelot.brain.entity.{DiskDriveMountable, FloppyDiskDrive}
|
||||
import totoro.ocelot.brain.util.Tier.Tier
|
||||
|
||||
@ -15,6 +17,17 @@ class DiskDriveMountableItem(val diskDriveMountable: DiskDriveMountable)
|
||||
|
||||
override def component: DiskDriveMountable = diskDriveMountable
|
||||
override def factory: ItemFactory = DiskDriveMountableItem.Factory
|
||||
|
||||
override def fillTooltip(tooltip: ItemTooltip): Unit = {
|
||||
super.fillTooltip(tooltip)
|
||||
if (diskDriveMountable != null) {
|
||||
diskDriveMountable.inventory(0).get match {
|
||||
case None => tooltip.addLine("Floppy: none")
|
||||
case Some(floppy: Floppy) if floppy.name.isDefined => tooltip.addLine(s"Floppy: ${floppy.name.get}")
|
||||
case _ =>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object DiskDriveMountableItem {
|
||||
|
||||
@ -7,6 +7,7 @@ import ocelot.desktop.inventory.{Item, ItemFactory, ItemRecoverer}
|
||||
import ocelot.desktop.ui.widget.InputDialog
|
||||
import ocelot.desktop.ui.widget.contextmenu.{ContextMenu, ContextMenuEntry, ContextMenuIcon, ContextMenuSubmenu}
|
||||
import ocelot.desktop.ui.widget.tooltip.ItemTooltip
|
||||
import totoro.ocelot.brain.Settings
|
||||
import totoro.ocelot.brain.entity.EEPROM
|
||||
import totoro.ocelot.brain.entity.traits.{Entity, Environment}
|
||||
import totoro.ocelot.brain.loot.Loot.{EEPROMFactory => LootEepromFactory}
|
||||
@ -29,6 +30,15 @@ class EepromItem(val eeprom: EEPROM) extends Item with ComponentItem with Persis
|
||||
for (source <- source) {
|
||||
tooltip.addLine(source)
|
||||
}
|
||||
|
||||
if (source.isEmpty && eeprom != null) {
|
||||
if (eeprom.codeBytes != null)
|
||||
tooltip.addLine(s"Code: ${eeprom.codeBytes.map(_.length).getOrElse(0)} bytes / ${Settings.get.eepromSize} bytes")
|
||||
if (eeprom.volatileData != null)
|
||||
tooltip.addLine(s"Data: ${eeprom.volatileData.length} bytes / ${Settings.get.eepromDataSize} bytes")
|
||||
if (eeprom.readonly)
|
||||
tooltip.addLine("Readonly")
|
||||
}
|
||||
}
|
||||
|
||||
override def fillRmbMenu(menu: ContextMenu): Unit = {
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
package ocelot.desktop.inventory.item
|
||||
|
||||
import ocelot.desktop.graphics.IconSource
|
||||
import ocelot.desktop.inventory.traits.{CardItem, ComponentItem, PersistableItem}
|
||||
import ocelot.desktop.inventory.traits.{CardItem, ComponentItem, GpuLikeItem, PersistableItem}
|
||||
import ocelot.desktop.inventory.{Item, ItemFactory, ItemRecoverer}
|
||||
import totoro.ocelot.brain.entity.GraphicsCard
|
||||
import totoro.ocelot.brain.entity.traits.{Entity, Environment}
|
||||
import totoro.ocelot.brain.entity.traits.{Entity, GenericGPU}
|
||||
import totoro.ocelot.brain.util.Tier.Tier
|
||||
|
||||
class GraphicsCardItem(val gpu: GraphicsCard) extends Item with ComponentItem with PersistableItem with CardItem {
|
||||
override def component: Entity with Environment = gpu
|
||||
class GraphicsCardItem(val gpu: GraphicsCard) extends Item with ComponentItem with PersistableItem with CardItem with GpuLikeItem {
|
||||
override def component: Entity with GenericGPU = gpu
|
||||
|
||||
override def factory: GraphicsCardItem.Factory = new GraphicsCardItem.Factory(gpu.tier)
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package ocelot.desktop.inventory.item
|
||||
import ocelot.desktop.graphics.IconSource
|
||||
import ocelot.desktop.inventory.traits.{ComponentItem, PersistableItem}
|
||||
import ocelot.desktop.inventory.{Item, ItemFactory, ItemRecoverer}
|
||||
import ocelot.desktop.ui.widget.tooltip.ItemTooltip
|
||||
import totoro.ocelot.brain.entity.Memory
|
||||
import totoro.ocelot.brain.entity.traits.{Entity, Environment}
|
||||
import totoro.ocelot.brain.util.ExtendedTier.ExtendedTier
|
||||
@ -12,6 +13,16 @@ class MemoryItem(val memory: Memory) extends Item with ComponentItem with Persis
|
||||
override def component: Entity with Environment = memory
|
||||
|
||||
override def factory: ItemFactory = new MemoryItem.Factory(memory.memoryTier)
|
||||
|
||||
override def fillTooltip(tooltip: ItemTooltip): Unit = {
|
||||
super.fillTooltip(tooltip)
|
||||
if (memory != null) {
|
||||
tooltip.addLine(
|
||||
if (memory.amount == Double.PositiveInfinity) "Capacity: infinite"
|
||||
else s"Capacity: ${memory.amount.toInt} kB"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object MemoryItem {
|
||||
|
||||
@ -3,6 +3,7 @@ package ocelot.desktop.inventory.item
|
||||
import ocelot.desktop.graphics.IconSource
|
||||
import ocelot.desktop.inventory.traits.{CardItem, ComponentItem, PersistableItem}
|
||||
import ocelot.desktop.inventory.{Item, ItemFactory, ItemRecoverer}
|
||||
import ocelot.desktop.ui.widget.tooltip.ItemTooltip
|
||||
import totoro.ocelot.brain.entity.NetworkCard
|
||||
import totoro.ocelot.brain.entity.traits.Entity
|
||||
import totoro.ocelot.brain.util.Tier
|
||||
@ -12,6 +13,17 @@ class NetworkCardItem(val card: NetworkCard) extends Item with ComponentItem wit
|
||||
override def component: Entity with NetworkCard = card
|
||||
|
||||
override def factory: ItemFactory = NetworkCardItem.Factory
|
||||
|
||||
override def fillTooltip(tooltip: ItemTooltip): Unit = {
|
||||
super.fillTooltip(tooltip)
|
||||
if (card != null) {
|
||||
tooltip.addLine(
|
||||
if (card.openPorts.isEmpty) s"Open ports: none"
|
||||
else s"Open ports: ${card.openPorts.mkString(", ")}"
|
||||
)
|
||||
tooltip.addLine(s"Max open ports: ${card.maxOpenPorts}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object NetworkCardItem {
|
||||
|
||||
@ -8,6 +8,7 @@ import ocelot.desktop.graphics.IconSource
|
||||
import ocelot.desktop.inventory.traits.{CardItem, ComponentItem, PersistableItem}
|
||||
import ocelot.desktop.inventory.{Item, ItemFactory, ItemRecoverer}
|
||||
import ocelot.desktop.ui.widget.contextmenu.{ContextMenu, ContextMenuEntry}
|
||||
import ocelot.desktop.ui.widget.tooltip.ItemTooltip
|
||||
import ocelot.desktop.util.{Logging, OcelotInterfaceLogStorage}
|
||||
import totoro.ocelot.brain.util.Tier
|
||||
import totoro.ocelot.brain.util.Tier.Tier
|
||||
@ -37,6 +38,12 @@ class OcelotCardItem(val ocelotCard: OcelotCard)
|
||||
}
|
||||
|
||||
override def factory: ItemFactory = OcelotCardItem.Factory
|
||||
|
||||
private val OcelotSays = Array("meow", ":3", "♥", "meooow", "~(=^–^)", "/ᐠ。ꞈ。ᐟ\\", "=^._.^=", "=’①。①’=")
|
||||
override def fillTooltip(tooltip: ItemTooltip): Unit = {
|
||||
super.fillTooltip(tooltip)
|
||||
tooltip.addLine(OcelotSays(((System.currentTimeMillis() / 5000) % OcelotSays.length).toInt))
|
||||
}
|
||||
}
|
||||
|
||||
object OcelotCardItem {
|
||||
|
||||
@ -3,6 +3,7 @@ package ocelot.desktop.inventory.item
|
||||
import ocelot.desktop.graphics.IconSource
|
||||
import ocelot.desktop.inventory.traits.{CardItem, ComponentItem, PersistableItem}
|
||||
import ocelot.desktop.inventory.{Item, ItemFactory, ItemRecoverer}
|
||||
import ocelot.desktop.ui.widget.tooltip.ItemTooltip
|
||||
import totoro.ocelot.brain.entity.SelfDestructingCard
|
||||
import totoro.ocelot.brain.entity.traits.{Entity, Environment}
|
||||
import totoro.ocelot.brain.util.Tier
|
||||
@ -17,6 +18,17 @@ class SelfDestructingCardItem(val card: SelfDestructingCard)
|
||||
override def component: Entity with Environment = card
|
||||
|
||||
override def factory: ItemFactory = SelfDestructingCardItem.Factory
|
||||
|
||||
override def fillTooltip(tooltip: ItemTooltip): Unit = {
|
||||
super.fillTooltip(tooltip)
|
||||
if (card != null) {
|
||||
tooltip.addLine(
|
||||
if (card.remainingTime < 0) "Fuse has not been set"
|
||||
else if (card.remainingTime == 0) "BOOM!"
|
||||
else card.remainingTime.toString
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object SelfDestructingCardItem {
|
||||
|
||||
@ -84,6 +84,13 @@ trait DiskItem extends ComponentItem with Windowed[DiskEditWindow] {
|
||||
case _: DiskUnmanaged => "Mode: unmanaged"
|
||||
})
|
||||
}
|
||||
|
||||
override def fillTooltip(tooltip: ItemTooltip): Unit = {
|
||||
super.fillTooltip(tooltip)
|
||||
if (component != null) {
|
||||
tooltip.addLine(s"Capacity: ${component.capacity / 1024} kB")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
object DiskItem {
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
package ocelot.desktop.inventory.traits
|
||||
|
||||
import ocelot.desktop.ui.widget.tooltip.ItemTooltip
|
||||
import totoro.ocelot.brain.Settings
|
||||
import totoro.ocelot.brain.entity.traits.{Entity, GenericGPU}
|
||||
import totoro.ocelot.brain.util.ColorDepth
|
||||
|
||||
trait GpuLikeItem extends ComponentItem {
|
||||
override def component: Entity with GenericGPU
|
||||
|
||||
override def fillTooltip(tooltip: ItemTooltip): Unit = {
|
||||
super.fillTooltip(tooltip)
|
||||
if (component != null) {
|
||||
val resolution = Settings.screenResolutionsByTier(component.tier.id)
|
||||
tooltip.addLine(s"Max resolution: ${resolution._1}x${resolution._2}")
|
||||
val depth = Settings.screenDepthsByTier(component.tier.id) match {
|
||||
case ColorDepth.OneBit => "1 bit"
|
||||
case ColorDepth.FourBit => "4 bit"
|
||||
case ColorDepth.EightBit => "8 bit"
|
||||
}
|
||||
tooltip.addLine(s"Max color depth: $depth")
|
||||
tooltip.addLine(s"VRAM: ${component.totalVRAM.toInt}")
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8,7 +8,7 @@ import ocelot.desktop.graphics.Graphics
|
||||
import ocelot.desktop.ui.layout.LinearLayout
|
||||
import ocelot.desktop.ui.widget.{Button, Filler, Label, PaddingBox, Widget}
|
||||
import ocelot.desktop.ui.widget.modal.ModalDialog
|
||||
import ocelot.desktop.ui.widget.tooltip.{LabelTooltip, Tooltip}
|
||||
import ocelot.desktop.ui.widget.tooltip.LabelTooltip
|
||||
import ocelot.desktop.util.{DrawUtils, Orientation, Spritesheet}
|
||||
|
||||
import java.awt.Desktop
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user