Now gauges render properly

This commit is contained in:
DBotThePony 2021-12-28 23:12:10 +07:00
parent f6057a73a6
commit 65aa3392ba
Signed by: DBot
GPG Key ID: DCC23B5715498507
3 changed files with 64 additions and 6 deletions

View File

@ -31,6 +31,22 @@ data class SkinElement(
renderRaw(stack, x, y, width, height, winding)
}
@JvmOverloads
fun renderPartial(
stack: PoseStack,
x: Float = 0f,
y: Float = 0f,
width: Float = rect_w,
height: Float = rect_h,
winding: UVWindingOrder = UVWindingOrder.U0_V0_U1_V1
) {
RenderSystem.setShaderTexture(0, texture)
RenderSystem.enableBlend()
RenderSystem.defaultBlendFunc()
renderRawPartial(stack, x, y, width, height, winding)
}
@JvmOverloads
fun renderW(
stack: PoseStack,
@ -81,4 +97,33 @@ data class SkinElement(
winded.v1,
)
}
@JvmOverloads
fun renderRawPartial(
stack: PoseStack,
x: Float = 0f,
y: Float = 0f,
width: Float = rect_w,
height: Float = rect_h,
winding: UVWindingOrder = UVWindingOrder.U0_V0_U1_V1
) {
val u0 = image_x / defined_width
val v0 = image_y / defined_height
val u1 = (image_x + width) / defined_width
val v1 = (image_y + height) / defined_height
val winded = winding.translate(u0, v0, u1, v1)
RenderHelper.drawTexturedRectUV(
stack,
x,
y,
width,
height,
winded.u0,
winded.v0,
winded.u1,
winded.v1,
)
}
}

View File

@ -18,7 +18,7 @@ class ChemicalGeneratorScreen(menu: ChemicalGeneratorMenu, inventory: Inventory,
PowerGaugePanel(this, frame, menu.energy, LEFT_MARGIN, GAUGE_TOP_WITH_SLOT)
SlotPanel(this, frame, menu.batterySlot, LEFT_MARGIN, SLOT_TOP_UNDER_GAUGE)
ProgressGaugePanel(this, frame, menu.progress, 63f, PROGRESS_ARROW_TOP)
ProgressGaugePanel(this, frame, menu.progress, 63f, PROGRESS_ARROW_TOP).flop = true
SlotPanel(this, frame, menu.fuelSlot, 93f, PROGRESS_SLOT_TOP)
return frame

View File

@ -6,6 +6,7 @@ import net.minecraft.network.chat.Component
import net.minecraft.network.chat.TranslatableComponent
import ru.dbotthepony.mc.otm.client.render.SkinElement
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
import ru.dbotthepony.mc.otm.client.screen.UVWindingOrder
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
import ru.dbotthepony.mc.otm.menu.FormattingHelper
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
@ -24,7 +25,8 @@ class PowerGaugePanel @JvmOverloads constructor(
override fun innerRender(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float) {
GAUGE_BACKGROUND.render(stack)
GAUGE_FOREGROUND.render(stack)
val height = this.height * widget.percentage()
GAUGE_FOREGROUND.renderPartial(stack, y = this.height - height, height = height, winding = UVWindingOrder.U0_V1_U1_V0)
}
override fun innerRenderTooltips(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float): Boolean {
@ -61,7 +63,8 @@ class MatterGaugePanel @JvmOverloads constructor(
override fun innerRender(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float) {
GAUGE_BACKGROUND.render(stack)
GAUGE_FOREGROUND.render(stack)
val height = this.height * widget.percentage()
GAUGE_FOREGROUND.renderPartial(stack, y = this.height - height, height = height, winding = UVWindingOrder.U0_V1_U1_V0)
}
override fun innerRenderTooltips(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float): Boolean {
@ -98,7 +101,8 @@ class PatternGaugePanel @JvmOverloads constructor(
override fun innerRender(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float) {
GAUGE_BACKGROUND.render(stack)
GAUGE_FOREGROUND.render(stack)
val height = this.height * widget.percentage()
GAUGE_FOREGROUND.renderPartial(stack, y = this.height - height, height = height, winding = UVWindingOrder.U0_V1_U1_V0)
}
override fun innerRenderTooltips(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float): Boolean {
@ -133,9 +137,18 @@ class ProgressGaugePanel @JvmOverloads constructor(
scissor = true
}
var flop = false
override fun innerRender(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float) {
GAUGE_BACKGROUND.render(stack)
GAUGE_FOREGROUND.render(stack)
if (flop) {
GAUGE_BACKGROUND.render(stack, winding = UVWindingOrder.U1_V0_U0_V1)
val width = this.width * widget.percentage()
GAUGE_FOREGROUND.renderPartial(stack, x = this.width - width, width = width, winding = UVWindingOrder.U1_V0_U0_V1)
} else {
GAUGE_BACKGROUND.render(stack)
val width = this.width * widget.percentage()
GAUGE_FOREGROUND.renderPartial(stack, width = width)
}
}
override fun innerRenderTooltips(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float): Boolean {