draw research and replication progress in pattern monitor

This commit is contained in:
YuRaNnNzZZ 2023-07-19 02:27:10 +03:00
parent 3b57dcb599
commit ab7e416453
Signed by: YuRaNnNzZZ
GPG Key ID: 5F71738C85A6006D

View File

@ -1,6 +1,7 @@
package ru.dbotthepony.mc.otm.client.screen.matter package ru.dbotthepony.mc.otm.client.screen.matter
import net.minecraft.ChatFormatting import net.minecraft.ChatFormatting
import net.minecraft.client.gui.GuiGraphics
import net.minecraft.client.gui.components.EditBox import net.minecraft.client.gui.components.EditBox
import net.minecraft.network.chat.Component import net.minecraft.network.chat.Component
import net.minecraft.world.entity.player.Inventory import net.minecraft.world.entity.player.Inventory
@ -8,8 +9,7 @@ import net.minecraft.world.item.ItemStack
import ru.dbotthepony.mc.otm.capability.matter.IPatternState import ru.dbotthepony.mc.otm.capability.matter.IPatternState
import ru.dbotthepony.mc.otm.capability.matter.IReplicationTask import ru.dbotthepony.mc.otm.capability.matter.IReplicationTask
import ru.dbotthepony.mc.otm.client.ShiftPressedCond import ru.dbotthepony.mc.otm.client.ShiftPressedCond
import ru.dbotthepony.mc.otm.client.render.WidgetLocation import ru.dbotthepony.mc.otm.client.render.*
import ru.dbotthepony.mc.otm.client.render.Widgets18
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.client.screen.panels.*
import ru.dbotthepony.mc.otm.client.screen.panels.button.ButtonPanel import ru.dbotthepony.mc.otm.client.screen.panels.button.ButtonPanel
@ -23,6 +23,7 @@ import ru.dbotthepony.mc.otm.client.screen.panels.util.DiscreteScrollBarPanel
import ru.dbotthepony.mc.otm.client.screen.panels.util.ScrollBarConstants import ru.dbotthepony.mc.otm.client.screen.panels.util.ScrollBarConstants
import ru.dbotthepony.mc.otm.core.TextComponent import ru.dbotthepony.mc.otm.core.TextComponent
import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.core.TranslatableComponent
import ru.dbotthepony.mc.otm.core.math.RGBAColor
import ru.dbotthepony.mc.otm.core.math.integerDivisionDown import ru.dbotthepony.mc.otm.core.math.integerDivisionDown
import ru.dbotthepony.mc.otm.core.util.ItemSorter import ru.dbotthepony.mc.otm.core.util.ItemSorter
import ru.dbotthepony.mc.otm.core.util.formatMatter import ru.dbotthepony.mc.otm.core.util.formatMatter
@ -177,6 +178,35 @@ class MatterPanelScreen(
return list return list
} }
override fun renderRegular(graphics: GuiGraphics, itemstack: ItemStack, countOverride: String?) {
if (isPatternView) {
super.renderRegular(graphics, itemstack, "")
menu.patternsFiltered.getOrNull(index)?.let {
if (it.researchPercent < 1f) {
font.drawScaledAligned(graphics.pose(), graphics.bufferSource(), (it.researchPercent * 100.0).roundToInt().toString() + "%", .5f, RenderGravity.BOTTOM_RIGHT, width - 1f, height - 1f, true, color = RGBAColor.WHITE)
}
}
} else {
super.renderRegular(graphics, itemstack, countOverride)
menu.tasksFiltered.getOrNull(index)?.let {
val progress = it.finished.toFloat() / it.total.toFloat()
val processing = it.inProgress.toFloat() / it.total.toFloat()
val barLeft = 2f
val barTop = 2f
val barWidth = width - 4f
val barHeight = 1f
graphics.renderRect(barLeft - .5f, barTop - .5f, barWidth + 1f, barHeight + 1f, color = RGBAColor.WHITE)
graphics.renderRect(barLeft, barTop, barWidth, barHeight, color = RGBAColor.BLACK)
graphics.renderRect(barLeft, barTop, barWidth * progress, barHeight, color = RGBAColor.GREEN)
graphics.renderRect(barLeft + barWidth * progress, barTop, barWidth * processing, barHeight, color = RGBAColor.YELLOW)
}
}
}
override fun mouseClickedInner(x: Double, y: Double, button: Int): Boolean { override fun mouseClickedInner(x: Double, y: Double, button: Int): Boolean {
if (isPatternView) { if (isPatternView) {
if (minecraft?.player?.isSpectator != true) if (minecraft?.player?.isSpectator != true)