mirror of
https://gitlab.com/cc-ru/ocelot/ocelot-desktop.git
synced 2026-02-08 11:12:38 +01:00
parent
f6ebed04b5
commit
9ef6bba5ee
@ -46,40 +46,10 @@ class ScreenNode(var screen: Screen, setup: Boolean = true) extends Node {
|
||||
else
|
||||
menu.addEntry(new ContextMenuEntry("Turn on", () => screen.setPowerState(true)))
|
||||
|
||||
menu.addEntry(new ContextMenuSubmenu("Set tier") {
|
||||
addEntry(new ContextMenuEntry("Tier 1", () => changeTier(Tier.One)))
|
||||
addEntry(new ContextMenuEntry("Tier 2", () => changeTier(Tier.Two)))
|
||||
addEntry(new ContextMenuEntry("Tier 3", () => changeTier(Tier.Three)))
|
||||
})
|
||||
|
||||
menu.addSeparator()
|
||||
super.setupContextMenu(menu)
|
||||
}
|
||||
|
||||
private def changeTier(newTier: Int): Unit = {
|
||||
if (newTier == screen.tier) return
|
||||
|
||||
val connections = screen.node.neighbors.toArray
|
||||
|
||||
val gpus = screen.node.network.nodes
|
||||
.filter(_.host.isInstanceOf[GenericGPU])
|
||||
.map(_.host.asInstanceOf[GenericGPU]).toArray
|
||||
.filter(_.isBoundTo(screen.node.address))
|
||||
|
||||
connections.foreach(screen.disconnect)
|
||||
OcelotDesktop.workspace.remove(screen)
|
||||
|
||||
val newScreen = new Screen(newTier)
|
||||
newScreen.node.address = screen.node.address
|
||||
newScreen.node.network = screen.node.network
|
||||
newScreen.node.network.connect(newScreen.node)
|
||||
OcelotDesktop.workspace.add(newScreen)
|
||||
|
||||
screen = newScreen
|
||||
connections.foreach(screen.connect)
|
||||
gpus.foreach(_.forceBind(screen.node))
|
||||
}
|
||||
|
||||
override def draw(g: Graphics): Unit = {
|
||||
super.draw(g)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user