summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils/renderables
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils/renderables')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt113
1 files changed, 78 insertions, 35 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 5316b68cc..c1b382ba8 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt
@@ -1,14 +1,18 @@
package at.hannibal2.skyhanni.utils.renderables
import at.hannibal2.skyhanni.config.core.config.gui.GuiPositionEditor
+import at.hannibal2.skyhanni.config.features.skillprogress.SkillProgressBarConfig
import at.hannibal2.skyhanni.data.ToolTipData
+import at.hannibal2.skyhanni.features.chroma.ChromaShaderManager
+import at.hannibal2.skyhanni.features.chroma.ChromaType
import at.hannibal2.skyhanni.utils.ColorUtils
+import at.hannibal2.skyhanni.utils.ColorUtils.darker
+import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.renderXAligned
+import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.renderYAligned
import at.hannibal2.skyhanni.utils.LorenzLogger
import at.hannibal2.skyhanni.utils.NEUItems.renderOnScreen
import at.hannibal2.skyhanni.utils.RenderUtils.HorizontalAlignment
import at.hannibal2.skyhanni.utils.RenderUtils.VerticalAlignment
-import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.renderXAligned
-import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.renderYAligned
import io.github.moulberry.moulconfig.gui.GuiScreenElementWrapper
import io.github.moulberry.notenoughupdates.util.Utils
import net.minecraft.client.Minecraft
@@ -16,6 +20,7 @@ import net.minecraft.client.gui.Gui
import net.minecraft.client.gui.inventory.GuiEditSign
import net.minecraft.client.renderer.GlStateManager
import net.minecraft.item.ItemStack
+import net.minecraft.util.ResourceLocation
import org.lwjgl.input.Mouse
import java.awt.Color
import java.util.Collections
@@ -29,8 +34,8 @@ 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
/**
@@ -43,7 +48,6 @@ interface Renderable {
val logger = LorenzLogger("debug/renderable")
val list = mutableMapOf<Pair<Int, Int>, List<Int>>()
-
var currentRenderPassMousePosition: Pair<Int, Int>? = null
set
@@ -237,12 +241,12 @@ interface Renderable {
var isHovered = false
override fun render(posX: Int, posY: Int) {
- if (isHovered(posX, posY) && condition() && shouldAllowLink(true, bypassChecks)) {
+ isHovered = if (isHovered(posX, posY) && condition() && shouldAllowLink(true, bypassChecks)) {
hovered.render(posX, posY)
- isHovered = true
+ true
} else {
unhovered.render(posX, posY)
- isHovered = false
+ false
}
}
}
@@ -301,25 +305,82 @@ interface Renderable {
percent: Double,
startColor: Color = Color(255, 0, 0),
endColor: Color = Color(0, 255, 0),
- width: Int = 30,
- height: Int = 4,
+ useChroma: Boolean = false,
+ texture: SkillProgressBarConfig.TexturedBar.UsedTexture? = null,
+ width: Int = 182,
+ height: Int = 5,
horizontalAlign: HorizontalAlignment = HorizontalAlignment.LEFT,
- verticalAlign: VerticalAlignment = VerticalAlignment.TOP,
+ verticalAlign: VerticalAlignment = VerticalAlignment.TOP
) = object : Renderable {
override val width = width
override val height = height
override val horizontalAlign = horizontalAlign
override val verticalAlign = verticalAlign
- val progress = (1.0 + percent * (width - 2.0)).toInt()
- val color = ColorUtils.blendRGB(startColor, endColor, percent)
+ private val progress = if (texture == null) {
+ (1.0 + percent * (width - 2.0)).toInt()
+ } else {
+ percent.toInt()
+ }
+
+ private var color = if (texture == null) {
+ ColorUtils.blendRGB(startColor, endColor, percent)
+ } else {
+ startColor
+ }
override fun render(posX: Int, posY: Int) {
- Gui.drawRect(0, 0, width, height, 0xFF43464B.toInt())
- Gui.drawRect(1, 1, width - 1, height - 1, color.darker().rgb)
- Gui.drawRect(1, 1, progress, height - 1, color.rgb)
+ if (texture == null) {
+ Gui.drawRect(0, 0, width, height, 0xFF43464B.toInt())
+
+ if (useChroma) {
+ ChromaShaderManager.begin(ChromaType.STANDARD)
+ }
+
+ val factor = 0.2
+ val bgColor = if (useChroma) Color.GRAY.darker() else color
+ Gui.drawRect(1, 1, width - 1, height - 1, bgColor.darker(factor).rgb)
+ Gui.drawRect(1, 1, progress, height - 1, color.rgb)
+
+ if (useChroma) {
+ ChromaShaderManager.end()
+ }
+ } else {
+ val (textureX, textureY) = if (texture == SkillProgressBarConfig.TexturedBar.UsedTexture.MATCH_PACK) Pair(0, 64) else Pair(0, 0)
+
+ Minecraft.getMinecraft().renderEngine.bindTexture(ResourceLocation(texture.path))
+ Minecraft.getMinecraft().ingameGUI.drawTexturedModalRect(posX, posY, textureX, textureY, width, height)
+
+ if (useChroma) {
+ ChromaShaderManager.begin(ChromaType.TEXTURED)
+ GlStateManager.color(1f, 1f, 1f, 1f)
+ } else {
+ GlStateManager.color(color.red / 255f, color.green / 255f, color.blue / 255f, 1f)
+ }
+ Minecraft.getMinecraft().ingameGUI.drawTexturedModalRect(posX, posY, textureX, textureY + height, progress, height)
+
+ if (useChroma) {
+ ChromaShaderManager.end()
+ }
+ }
}
+ }
+
+ fun fixedSizeLine(
+ content: Renderable,
+ width: Int,
+ horizontalAlign: HorizontalAlignment = HorizontalAlignment.LEFT,
+ verticalAlign: VerticalAlignment = VerticalAlignment.TOP,
+ ) = object : Renderable {
+ val render = content
+ override val width = width
+ override val height = render.height
+ override val horizontalAlign = horizontalAlign
+ override val verticalAlign = verticalAlign
+ override fun render(posX: Int, posY: Int) {
+ render.renderXAligned(0, 0, width)
+ }
}
fun horizontalContainer(
@@ -345,23 +406,5 @@ interface Renderable {
GlStateManager.translate(-width.toFloat() - spacing.toFloat(), 0f, 0f)
}
}
-
- fun fixedSizeLine(
- content: Renderable,
- width: Int,
- horizontalAlign: HorizontalAlignment = HorizontalAlignment.LEFT,
- verticalAlign: VerticalAlignment = VerticalAlignment.TOP,
- ) = object : Renderable {
- val render = content
-
- override val width = width
- override val height = render.height
- override val horizontalAlign = horizontalAlign
- override val verticalAlign = verticalAlign
-
- override fun render(posX: Int, posY: Int) {
- render.renderXAligned(0, 0, width)
- }
- }
}
-}
+} \ No newline at end of file