summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils/renderables
diff options
context:
space:
mode:
authorThunderblade73 <85900443+Thunderblade73@users.noreply.github.com>2024-04-08 20:27:38 +0200
committerGitHub <noreply@github.com>2024-04-08 20:27:38 +0200
commit4aaf4295152d211b1c8853a173cc4cf6a9d000a2 (patch)
tree9ebd0a44cad5329bdd2452e99395e7cc7ba16f41 /src/main/java/at/hannibal2/skyhanni/utils/renderables
parent451a9b5636c113d1da15fc6419ea99f306f66e55 (diff)
downloadskyhanni-4aaf4295152d211b1c8853a173cc4cf6a9d000a2.tar.gz
skyhanni-4aaf4295152d211b1c8853a173cc4cf6a9d000a2.tar.bz2
skyhanni-4aaf4295152d211b1c8853a173cc4cf6a9d000a2.zip
Fix/Backend: Renderable.itemStack itemScale (#1390)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils/renderables')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt123
1 files changed, 59 insertions, 64 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt b/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt
index 3b1249808..542b62c42 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt
@@ -10,6 +10,7 @@ import at.hannibal2.skyhanni.utils.ColorUtils
import at.hannibal2.skyhanni.utils.ColorUtils.darker
import at.hannibal2.skyhanni.utils.LorenzColor
import at.hannibal2.skyhanni.utils.LorenzLogger
+import at.hannibal2.skyhanni.utils.NEUItems
import at.hannibal2.skyhanni.utils.NEUItems.renderOnScreen
import at.hannibal2.skyhanni.utils.RenderUtils.HorizontalAlignment
import at.hannibal2.skyhanni.utils.RenderUtils.VerticalAlignment
@@ -18,8 +19,8 @@ import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.calculateTableYOf
import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.renderXAligned
import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.renderXYAligned
import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.renderYAligned
-import io.github.notenoughupdates.moulconfig.gui.GuiScreenElementWrapper
import io.github.moulberry.notenoughupdates.util.Utils
+import io.github.notenoughupdates.moulconfig.gui.GuiScreenElementWrapper
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.Gui
import net.minecraft.client.gui.inventory.GuiEditSign
@@ -39,8 +40,7 @@ interface Renderable {
val horizontalAlign: HorizontalAlignment
val verticalAlign: VerticalAlignment
fun isHovered(posX: Int, posY: Int) = currentRenderPassMousePosition?.let { (x, y) ->
- x in (posX..posX + width)
- && y in (posY..posY + height) // TODO: adjust for variable height?
+ x in (posX..posX + width) && y in (posY..posY + height) // TODO: adjust for variable height?
} ?: false
/**
@@ -65,7 +65,7 @@ interface Renderable {
}
}
- fun fromAny(any: Any?, itemScale: Double = 1.0): Renderable? = when (any) {
+ fun fromAny(any: Any?, itemScale: Double = NEUItems.itemFontSize): Renderable? = when (any) {
null -> placeholder(12)
is Renderable -> any
is String -> string(any)
@@ -81,8 +81,7 @@ interface Renderable {
onClick: () -> Unit,
bypassChecks: Boolean = false,
condition: () -> Boolean = { true },
- ): Renderable =
- link(string(text), onClick, bypassChecks, condition)
+ ): Renderable = link(string(text), onClick, bypassChecks, condition)
fun link(
renderable: Renderable,
@@ -119,28 +118,25 @@ interface Renderable {
button: Int = 0,
bypassChecks: Boolean = false,
condition: () -> Boolean = { true },
- ) =
- object : Renderable {
- override val width = render.width
- override val height = render.height
- override val horizontalAlign = render.horizontalAlign
- override val verticalAlign = render.verticalAlign
+ ) = object : Renderable {
+ override val width = render.width
+ override val height = render.height
+ override val horizontalAlign = render.horizontalAlign
+ override val verticalAlign = render.verticalAlign
- private var wasDown = false
+ private var wasDown = false
- override fun render(posX: Int, posY: Int) {
- val isDown = Mouse.isButtonDown(button)
- if (isDown > wasDown && isHovered(posX, posY) && condition() && shouldAllowLink(
- true,
- bypassChecks
- )
- ) {
- onClick()
- }
- wasDown = isDown
- render.render(posX, posY)
+ override fun render(posX: Int, posY: Int) {
+ val isDown = Mouse.isButtonDown(button)
+ if (isDown > wasDown && isHovered(posX, posY) && condition() &&
+ shouldAllowLink(true, bypassChecks)
+ ) {
+ onClick()
}
+ wasDown = isDown
+ render.render(posX, posY)
}
+ }
fun hoverTips(
content: Any,
@@ -248,43 +244,40 @@ interface Renderable {
unhovered: Renderable,
bypassChecks: Boolean = false,
condition: () -> Boolean = { true },
- ) =
- object : Renderable {
- override val width: Int
- get() = max(hovered.width, unhovered.width)
- override val height = 10
- override val horizontalAlign get() = if (isHovered) hovered.horizontalAlign else unhovered.horizontalAlign
- override val verticalAlign get() = if (isHovered) hovered.verticalAlign else unhovered.verticalAlign
+ ) = object : Renderable {
+ override val width: Int
+ get() = max(hovered.width, unhovered.width)
+ override val height = 10
+ override val horizontalAlign get() = if (isHovered) hovered.horizontalAlign else unhovered.horizontalAlign
+ override val verticalAlign get() = if (isHovered) hovered.verticalAlign else unhovered.verticalAlign
- var isHovered = false
+ var isHovered = false
- override fun render(posX: Int, posY: Int) {
- isHovered = if (isHovered(posX, posY) && condition() && shouldAllowLink(true, bypassChecks)) {
- hovered.render(posX, posY)
- true
- } else {
- unhovered.render(posX, posY)
- false
- }
+ override fun render(posX: Int, posY: Int) {
+ isHovered = if (isHovered(posX, posY) && condition() && shouldAllowLink(true, bypassChecks)) {
+ hovered.render(posX, posY)
+ true
+ } else {
+ unhovered.render(posX, posY)
+ false
}
}
+ }
fun itemStack(
- any: ItemStack,
- scale: Double = 1.0,
+ item: ItemStack,
+ scale: Double = NEUItems.itemFontSize,
+ xSpacing: Int = 2,
horizontalAlign: HorizontalAlignment = HorizontalAlignment.LEFT,
- verticalAlign: VerticalAlignment = VerticalAlignment.TOP,
+ verticalAlign: VerticalAlignment = VerticalAlignment.CENTER,
) = object : Renderable {
- override val width: Int
- get() = 12
- override val height = 10
+ override val width = (15.5 * scale + 1.5).toInt() + xSpacing
+ override val height = (15.5 * scale + 1.5).toInt()
override val horizontalAlign = horizontalAlign
override val verticalAlign = verticalAlign
override fun render(posX: Int, posY: Int) {
- GlStateManager.pushMatrix()
- any.renderOnScreen(0F, 0F, scaleMultiplier = scale)
- GlStateManager.popMatrix()
+ item.renderOnScreen(xSpacing / 2.0f, 0F, scaleMultiplier = scale)
}
}
@@ -297,7 +290,7 @@ interface Renderable {
scale: Double = 1.0,
color: Color = Color.WHITE,
horizontalAlign: HorizontalAlignment = HorizontalAlignment.LEFT,
- verticalAlign: VerticalAlignment = VerticalAlignment.TOP,
+ verticalAlign: VerticalAlignment = VerticalAlignment.CENTER,
) = object : Renderable {
override val width by lazy { (Minecraft.getMinecraft().fontRendererObj.getStringWidth(text) * scale).toInt() + 1 }
@@ -449,18 +442,12 @@ interface Renderable {
}
} else {
val (textureX, textureY) = if (texture == SkillProgressBarConfig.TexturedBar.UsedTexture.MATCH_PACK) Pair(
- 0,
- 64
+ 0, 64
) else Pair(0, 0)
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceLocation(texture.path))
Minecraft.getMinecraft().ingameGUI.drawTexturedModalRect(
- posX,
- posY,
- textureX,
- textureY,
- width,
- height
+ posX, posY, textureX, textureY, width, height
)
if (useChroma) {
@@ -470,12 +457,7 @@ interface Renderable {
GlStateManager.color(color.red / 255f, color.green / 255f, color.blue / 255f, 1f)
}
Minecraft.getMinecraft().ingameGUI.drawTexturedModalRect(
- posX,
- posY,
- textureX,
- textureY + height,
- progress,
- height
+ posX, posY, textureX, textureY + height, progress, height
)
if (useChroma) {
@@ -485,6 +467,19 @@ interface Renderable {
}
}
+ fun Renderable.renderBounds(color: Color = LorenzColor.GREEN.toColor()) = object : Renderable {
+ override val width = this@renderBounds.width
+ override val height = this@renderBounds.height
+ override val horizontalAlign = this@renderBounds.horizontalAlign
+ override val verticalAlign = this@renderBounds.verticalAlign
+
+ override fun render(posX: Int, posY: Int) {
+ Gui.drawRect(0, 0, width, height, color.rgb)
+ this@renderBounds.render(posX, posY)
+ }
+
+ }
+
fun fixedSizeLine(
content: Renderable,
width: Int,