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.Complexity=Komplexität: %s/%s
|
||||
oc:gui.RobotAssembler.InsertCase=Computergehäuse einlegen
|
||||
oc:gui.RobotAssembler.Progress=Fortschritt: %s (%s)
|
||||
oc:gui.RobotAssembler.Run=Zusammenbauen
|
||||
oc:gui.ServerRack.None=Keine
|
||||
oc:gui.ServerRack.Back=Hinten
|
||||
|
@ -125,6 +125,7 @@ oc:gui.Robot.TurnOn=Turn on
|
||||
oc:gui.RobotAssembler.CollectRobot=Collect robot
|
||||
oc:gui.RobotAssembler.Complexity=Complexity: %s/%s
|
||||
oc:gui.RobotAssembler.InsertCase=Insert a Computer Case
|
||||
oc:gui.RobotAssembler.Progress=Progress: %s (%s)
|
||||
oc:gui.RobotAssembler.Run=Assemble
|
||||
oc:gui.ServerRack.None=None
|
||||
oc:gui.ServerRack.Back=Back
|
||||
|
@ -6,14 +6,18 @@ local robot = {}
|
||||
-------------------------------------------------------------------------------
|
||||
-- General
|
||||
|
||||
function robot.level()
|
||||
return component.robot.level()
|
||||
end
|
||||
|
||||
function robot.name()
|
||||
return component.robot.name()
|
||||
end
|
||||
|
||||
function robot.level()
|
||||
if component.isAvailable("experience") then
|
||||
return component.experience.level()
|
||||
else
|
||||
return 0
|
||||
end
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
-- World
|
||||
|
||||
@ -32,6 +36,11 @@ end
|
||||
-------------------------------------------------------------------------------
|
||||
-- Inventory
|
||||
|
||||
function robot.inventorySize()
|
||||
return component.robot.inventorySize()
|
||||
end
|
||||
|
||||
|
||||
function robot.select(slot)
|
||||
return component.robot.select(slot)
|
||||
end
|
||||
|
@ -11,14 +11,18 @@ import li.cil.oc.client.{PacketHandler => ClientPacketHandler}
|
||||
import li.cil.oc.common.Proxy
|
||||
import li.cil.oc.server.{PacketHandler => ServerPacketHandler, CommandHandler}
|
||||
|
||||
@Mod(modid = "OpenComputers", modLanguage = "scala",
|
||||
/* certificateFingerprint = "@FINGERPRINT@", */ useMetadata = true)
|
||||
@Mod(modid = OpenComputers.ModID, modLanguage = "scala",
|
||||
/* certificateFingerprint = OpenComputers.Fingerprint, */ useMetadata = true)
|
||||
@NetworkMod(clientSideRequired = true, serverSideRequired = false,
|
||||
clientPacketHandlerSpec = new SidedPacketHandler(
|
||||
channels = Array("OpenComp"), packetHandler = classOf[ClientPacketHandler]),
|
||||
serverPacketHandlerSpec = new SidedPacketHandler(
|
||||
channels = Array("OpenComp"), packetHandler = classOf[ServerPacketHandler]))
|
||||
object OpenComputers {
|
||||
final val ModID = "OpenComputers"
|
||||
|
||||
final val Fingerprint = "@FINGERPRINT@"
|
||||
|
||||
val log = Logger.getLogger("OpenComputers")
|
||||
|
||||
@SidedProxy(clientSide = "li.cil.oc.client.Proxy", serverSide = "li.cil.oc.server.Proxy")
|
||||
@ -26,6 +30,8 @@ object OpenComputers {
|
||||
|
||||
var tampered: Option[FMLFingerprintViolationEvent] = None
|
||||
|
||||
scala.collection.mutable.Map.empty[String, Int].keySet
|
||||
|
||||
// @EventHandler
|
||||
// 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)),
|
||||
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]
|
||||
tooltip.add(StatCollector.translateToLocal(Settings.namespace + "gui.RobotAssembler.Run"))
|
||||
drawHoveringText(tooltip, mouseX - guiLeft, mouseY - guiTop, fontRenderer)
|
||||
val timeRemaining = formatTime(assemblerContainer.assemblyRemainingTime)
|
||||
tooltip.add(StatCollector.translateToLocalFormatted(Settings.namespace + "gui.RobotAssembler.Progress", assemblerContainer.assemblyProgress.toString, timeRemaining))
|
||||
copiedDrawHoveringText(tooltip, mouseX - guiLeft, mouseY - guiTop, fontRenderer)
|
||||
}
|
||||
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) {
|
||||
GL11.glColor3f(1, 1, 1) // Required under Linux.
|
||||
super.drawGuiContainerBackgroundLayer(dt, mouseX, mouseY)
|
||||
|
@ -6,11 +6,11 @@ import li.cil.oc.common.{InventorySlots, tileentity}
|
||||
import li.cil.oc.util.ItemUtils
|
||||
import net.minecraft.entity.player.InventoryPlayer
|
||||
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.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.
|
||||
{
|
||||
val index = inventorySlots.size
|
||||
@ -57,6 +57,7 @@ class RobotAssembler(playerInventory: InventoryPlayer, assembler: tileentity.Rob
|
||||
|
||||
var isAssembling = false
|
||||
var assemblyProgress = 0
|
||||
var assemblyRemainingTime = 0
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
override def updateProgressBar(id: Int, value: Int) {
|
||||
@ -68,6 +69,10 @@ class RobotAssembler(playerInventory: InventoryPlayer, assembler: tileentity.Rob
|
||||
if (id == 1) {
|
||||
assemblyProgress = value
|
||||
}
|
||||
|
||||
if (id == 2) {
|
||||
assemblyRemainingTime = value
|
||||
}
|
||||
}
|
||||
|
||||
override def detectAndSendChanges() {
|
||||
@ -77,9 +82,12 @@ class RobotAssembler(playerInventory: InventoryPlayer, assembler: tileentity.Rob
|
||||
isAssembling = assembler.isAssembling
|
||||
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
|
||||
assemblyRemainingTime = timeRemaining
|
||||
sendProgressBarUpdate(1, assemblyProgress)
|
||||
sendProgressBarUpdate(2, timeRemaining)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ class Robot(val robot: tileentity.Robot) extends ManagedComponent {
|
||||
// ----------------------------------------------------------------------- //
|
||||
|
||||
@Callback
|
||||
def getInventorySize(context: Context, args: Arguments): Array[AnyRef] = result(robot.inventorySize)
|
||||
def inventorySize(context: Context, args: Arguments): Array[AnyRef] = result(robot.inventorySize)
|
||||
|
||||
@Callback
|
||||
def select(context: Context, args: Arguments): Array[AnyRef] = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user