mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-17 11:15:12 -04:00
Progress info (percent + remaining time) as progress bar tooltip in robot assembler.
This commit is contained in:
parent
68b9cc17c4
commit
0c6584411f
@ -125,6 +125,7 @@ oc:gui.Robot.TurnOn=Einschalten
|
|||||||
oc:gui.RobotAssembler.CollectRobot=Roboter entnehmen
|
oc:gui.RobotAssembler.CollectRobot=Roboter entnehmen
|
||||||
oc:gui.RobotAssembler.Complexity=Komplexität: %s/%s
|
oc:gui.RobotAssembler.Complexity=Komplexität: %s/%s
|
||||||
oc:gui.RobotAssembler.InsertCase=Computergehäuse einlegen
|
oc:gui.RobotAssembler.InsertCase=Computergehäuse einlegen
|
||||||
|
oc:gui.RobotAssembler.Progress=Fortschritt: %s (%s)
|
||||||
oc:gui.RobotAssembler.Run=Zusammenbauen
|
oc:gui.RobotAssembler.Run=Zusammenbauen
|
||||||
oc:gui.ServerRack.None=Keine
|
oc:gui.ServerRack.None=Keine
|
||||||
oc:gui.ServerRack.Back=Hinten
|
oc:gui.ServerRack.Back=Hinten
|
||||||
|
@ -125,6 +125,7 @@ oc:gui.Robot.TurnOn=Turn on
|
|||||||
oc:gui.RobotAssembler.CollectRobot=Collect robot
|
oc:gui.RobotAssembler.CollectRobot=Collect robot
|
||||||
oc:gui.RobotAssembler.Complexity=Complexity: %s/%s
|
oc:gui.RobotAssembler.Complexity=Complexity: %s/%s
|
||||||
oc:gui.RobotAssembler.InsertCase=Insert a Computer Case
|
oc:gui.RobotAssembler.InsertCase=Insert a Computer Case
|
||||||
|
oc:gui.RobotAssembler.Progress=Progress: %s (%s)
|
||||||
oc:gui.RobotAssembler.Run=Assemble
|
oc:gui.RobotAssembler.Run=Assemble
|
||||||
oc:gui.ServerRack.None=None
|
oc:gui.ServerRack.None=None
|
||||||
oc:gui.ServerRack.Back=Back
|
oc:gui.ServerRack.Back=Back
|
||||||
|
@ -6,14 +6,18 @@ local robot = {}
|
|||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
-- General
|
-- General
|
||||||
|
|
||||||
function robot.level()
|
|
||||||
return component.robot.level()
|
|
||||||
end
|
|
||||||
|
|
||||||
function robot.name()
|
function robot.name()
|
||||||
return component.robot.name()
|
return component.robot.name()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function robot.level()
|
||||||
|
if component.isAvailable("experience") then
|
||||||
|
return component.experience.level()
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
-- World
|
-- World
|
||||||
|
|
||||||
@ -32,6 +36,11 @@ end
|
|||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
-- Inventory
|
-- Inventory
|
||||||
|
|
||||||
|
function robot.inventorySize()
|
||||||
|
return component.robot.inventorySize()
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function robot.select(slot)
|
function robot.select(slot)
|
||||||
return component.robot.select(slot)
|
return component.robot.select(slot)
|
||||||
end
|
end
|
||||||
|
@ -11,14 +11,18 @@ import li.cil.oc.client.{PacketHandler => ClientPacketHandler}
|
|||||||
import li.cil.oc.common.Proxy
|
import li.cil.oc.common.Proxy
|
||||||
import li.cil.oc.server.{PacketHandler => ServerPacketHandler, CommandHandler}
|
import li.cil.oc.server.{PacketHandler => ServerPacketHandler, CommandHandler}
|
||||||
|
|
||||||
@Mod(modid = "OpenComputers", modLanguage = "scala",
|
@Mod(modid = OpenComputers.ModID, modLanguage = "scala",
|
||||||
/* certificateFingerprint = "@FINGERPRINT@", */ useMetadata = true)
|
/* certificateFingerprint = OpenComputers.Fingerprint, */ useMetadata = true)
|
||||||
@NetworkMod(clientSideRequired = true, serverSideRequired = false,
|
@NetworkMod(clientSideRequired = true, serverSideRequired = false,
|
||||||
clientPacketHandlerSpec = new SidedPacketHandler(
|
clientPacketHandlerSpec = new SidedPacketHandler(
|
||||||
channels = Array("OpenComp"), packetHandler = classOf[ClientPacketHandler]),
|
channels = Array("OpenComp"), packetHandler = classOf[ClientPacketHandler]),
|
||||||
serverPacketHandlerSpec = new SidedPacketHandler(
|
serverPacketHandlerSpec = new SidedPacketHandler(
|
||||||
channels = Array("OpenComp"), packetHandler = classOf[ServerPacketHandler]))
|
channels = Array("OpenComp"), packetHandler = classOf[ServerPacketHandler]))
|
||||||
object OpenComputers {
|
object OpenComputers {
|
||||||
|
final val ModID = "OpenComputers"
|
||||||
|
|
||||||
|
final val Fingerprint = "@FINGERPRINT@"
|
||||||
|
|
||||||
val log = Logger.getLogger("OpenComputers")
|
val log = Logger.getLogger("OpenComputers")
|
||||||
|
|
||||||
@SidedProxy(clientSide = "li.cil.oc.client.Proxy", serverSide = "li.cil.oc.server.Proxy")
|
@SidedProxy(clientSide = "li.cil.oc.client.Proxy", serverSide = "li.cil.oc.server.Proxy")
|
||||||
@ -26,6 +30,8 @@ object OpenComputers {
|
|||||||
|
|
||||||
var tampered: Option[FMLFingerprintViolationEvent] = None
|
var tampered: Option[FMLFingerprintViolationEvent] = None
|
||||||
|
|
||||||
|
scala.collection.mutable.Map.empty[String, Int].keySet
|
||||||
|
|
||||||
// @EventHandler
|
// @EventHandler
|
||||||
// def invalidFingerprint(e: FMLFingerprintViolationEvent) = tampered = Some(e)
|
// def invalidFingerprint(e: FMLFingerprintViolationEvent) = tampered = Some(e)
|
||||||
|
|
||||||
|
@ -64,15 +64,27 @@ class RobotAssembler(playerInventory: InventoryPlayer, val assembler: tileentity
|
|||||||
StatCollector.translateToLocalFormatted(Settings.namespace + "gui.RobotAssembler.Complexity", Int.box(assembler.complexity), Int.box(assembler.maxComplexity)),
|
StatCollector.translateToLocalFormatted(Settings.namespace + "gui.RobotAssembler.Complexity", Int.box(assembler.complexity), Int.box(assembler.maxComplexity)),
|
||||||
30, 94, if (assembler.complexity <= assembler.maxComplexity) 0x404040 else 0x804040)
|
30, 94, if (assembler.complexity <= assembler.maxComplexity) 0x404040 else 0x804040)
|
||||||
}
|
}
|
||||||
|
if (runButton.func_82252_a) {
|
||||||
|
val tooltip = new java.util.ArrayList[String]
|
||||||
|
tooltip.add(StatCollector.translateToLocal(Settings.namespace + "gui.RobotAssembler.Run"))
|
||||||
|
drawHoveringText(tooltip, mouseX - guiLeft, mouseY - guiTop, fontRenderer)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (runButton.func_82252_a && !assemblerContainer.isAssembling) {
|
else if (isPointInRegion(progressX, progressY, progressWidth, progressHeight, mouseX, mouseY)) {
|
||||||
val tooltip = new java.util.ArrayList[String]
|
val tooltip = new java.util.ArrayList[String]
|
||||||
tooltip.add(StatCollector.translateToLocal(Settings.namespace + "gui.RobotAssembler.Run"))
|
val timeRemaining = formatTime(assemblerContainer.assemblyRemainingTime)
|
||||||
drawHoveringText(tooltip, mouseX - guiLeft, mouseY - guiTop, fontRenderer)
|
tooltip.add(StatCollector.translateToLocalFormatted(Settings.namespace + "gui.RobotAssembler.Progress", assemblerContainer.assemblyProgress.toString, timeRemaining))
|
||||||
|
copiedDrawHoveringText(tooltip, mouseX - guiLeft, mouseY - guiTop, fontRenderer)
|
||||||
}
|
}
|
||||||
GL11.glPopAttrib()
|
GL11.glPopAttrib()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private def formatTime(seconds: Int) = {
|
||||||
|
// Assembly times should not / rarely exceed one hour, so this is good enough.
|
||||||
|
if (seconds < 60) "0:%02d".format(seconds)
|
||||||
|
else "%d:%02d".format(seconds / 60, seconds % 60)
|
||||||
|
}
|
||||||
|
|
||||||
override def drawGuiContainerBackgroundLayer(dt: Float, mouseX: Int, mouseY: Int) {
|
override def drawGuiContainerBackgroundLayer(dt: Float, mouseX: Int, mouseY: Int) {
|
||||||
GL11.glColor3f(1, 1, 1) // Required under Linux.
|
GL11.glColor3f(1, 1, 1) // Required under Linux.
|
||||||
super.drawGuiContainerBackgroundLayer(dt, mouseX, mouseY)
|
super.drawGuiContainerBackgroundLayer(dt, mouseX, mouseY)
|
||||||
|
@ -6,11 +6,11 @@ import li.cil.oc.common.{InventorySlots, tileentity}
|
|||||||
import li.cil.oc.util.ItemUtils
|
import li.cil.oc.util.ItemUtils
|
||||||
import net.minecraft.entity.player.InventoryPlayer
|
import net.minecraft.entity.player.InventoryPlayer
|
||||||
import net.minecraft.inventory.Slot
|
import net.minecraft.inventory.Slot
|
||||||
import li.cil.oc.api
|
import li.cil.oc.{Settings, api}
|
||||||
import li.cil.oc.common.InventorySlots.Tier
|
import li.cil.oc.common.InventorySlots.Tier
|
||||||
import li.cil.oc.client.gui.Icons
|
import li.cil.oc.client.gui.Icons
|
||||||
|
|
||||||
class RobotAssembler(playerInventory: InventoryPlayer, assembler: tileentity.RobotAssembler) extends Player(playerInventory, assembler) {
|
class RobotAssembler(playerInventory: InventoryPlayer, val assembler: tileentity.RobotAssembler) extends Player(playerInventory, assembler) {
|
||||||
// Computer case.
|
// Computer case.
|
||||||
{
|
{
|
||||||
val index = inventorySlots.size
|
val index = inventorySlots.size
|
||||||
@ -57,6 +57,7 @@ class RobotAssembler(playerInventory: InventoryPlayer, assembler: tileentity.Rob
|
|||||||
|
|
||||||
var isAssembling = false
|
var isAssembling = false
|
||||||
var assemblyProgress = 0
|
var assemblyProgress = 0
|
||||||
|
var assemblyRemainingTime = 0
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
override def updateProgressBar(id: Int, value: Int) {
|
override def updateProgressBar(id: Int, value: Int) {
|
||||||
@ -68,6 +69,10 @@ class RobotAssembler(playerInventory: InventoryPlayer, assembler: tileentity.Rob
|
|||||||
if (id == 1) {
|
if (id == 1) {
|
||||||
assemblyProgress = value
|
assemblyProgress = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (id == 2) {
|
||||||
|
assemblyRemainingTime = value
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override def detectAndSendChanges() {
|
override def detectAndSendChanges() {
|
||||||
@ -77,9 +82,12 @@ class RobotAssembler(playerInventory: InventoryPlayer, assembler: tileentity.Rob
|
|||||||
isAssembling = assembler.isAssembling
|
isAssembling = assembler.isAssembling
|
||||||
sendProgressBarUpdate(0, if (isAssembling) 1 else 0)
|
sendProgressBarUpdate(0, if (isAssembling) 1 else 0)
|
||||||
}
|
}
|
||||||
if (assemblyProgress != assembler.progress) {
|
val timeRemaining = (assembler.requiredEnergy / Settings.get.assemblerTickAmount * Settings.get.tickFrequency / 20).toInt
|
||||||
|
if (assemblyProgress != assembler.progress || assemblyRemainingTime != timeRemaining) {
|
||||||
assemblyProgress = assembler.progress
|
assemblyProgress = assembler.progress
|
||||||
|
assemblyRemainingTime = timeRemaining
|
||||||
sendProgressBarUpdate(1, assemblyProgress)
|
sendProgressBarUpdate(1, assemblyProgress)
|
||||||
|
sendProgressBarUpdate(2, timeRemaining)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ class Robot(val robot: tileentity.Robot) extends ManagedComponent {
|
|||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
@Callback
|
@Callback
|
||||||
def getInventorySize(context: Context, args: Arguments): Array[AnyRef] = result(robot.inventorySize)
|
def inventorySize(context: Context, args: Arguments): Array[AnyRef] = result(robot.inventorySize)
|
||||||
|
|
||||||
@Callback
|
@Callback
|
||||||
def select(context: Context, args: Arguments): Array[AnyRef] = {
|
def select(context: Context, args: Arguments): Array[AnyRef] = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user