summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils
diff options
context:
space:
mode:
authorThunderblade73 <85900443+Thunderblade73@users.noreply.github.com>2024-05-29 23:00:20 +0200
committerGitHub <noreply@github.com>2024-05-29 23:00:20 +0200
commit2af916371b2edf71fb055a3f8de2bcd7b99b2251 (patch)
tree9a0e4f7ce2dca37f1d227ba0d6605f7b44e096e9 /src/main/java/at/hannibal2/skyhanni/utils
parent21f92de676710c0c39d37056dada80af8266a9ba (diff)
downloadskyhanni-2af916371b2edf71fb055a3f8de2bcd7b99b2251.tar.gz
skyhanni-2af916371b2edf71fb055a3f8de2bcd7b99b2251.tar.bz2
skyhanni-2af916371b2edf71fb055a3f8de2bcd7b99b2251.zip
Improvement: Added Mining Event Icons (#1305)
Co-authored-by: Cal <cwolfson58@gmail.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/ConfigUtils.kt13
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt17
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/shader/ShaderHelper.kt4
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/shader/ShaderManager.kt5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/shader/Uniform.kt2
5 files changed, 41 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/ConfigUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/ConfigUtils.kt
index 239f250a0..94d981d8e 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/ConfigUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/ConfigUtils.kt
@@ -65,6 +65,19 @@ object ConfigUtils {
return JsonPrimitive(getEnumConstantFromLegacyId(element.asInt, enumClass)?.name)
}
+ /**
+ * Migrates a Boolean to an Enum Constant.
+ *
+ * @param element The JsonElement to migrate
+ * @param trueValue The enum value it should map to if the value is true
+ * @param falseValue The enum value it should map to if the value is false
+ * @return The migrated JsonElement
+ */
+ fun <T : Enum<T>> migrateBooleanToEnum(element: JsonElement, trueValue: T, falseValue: T): JsonElement {
+ require(element is JsonPrimitive) { "Expected a JsonPrimitive but got ${element.javaClass.simpleName}" }
+ return JsonPrimitive(if (element.asBoolean) trueValue.name else falseValue.name)
+ }
+
fun KMutableProperty0<*>.tryFindEditor(editor: MoulConfigEditor<*>): ProcessedOption? {
return editor.processedConfig.getOptionFromField(this.javaField ?: return null)
}
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 d893cef52..88b291844 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt
@@ -7,6 +7,7 @@ import at.hannibal2.skyhanni.data.HighlightOnHoverSlot
import at.hannibal2.skyhanni.data.ToolTipData
import at.hannibal2.skyhanni.features.chroma.ChromaShaderManager
import at.hannibal2.skyhanni.features.chroma.ChromaType
+import at.hannibal2.skyhanni.features.misc.DarkenShader
import at.hannibal2.skyhanni.utils.CollectionUtils.contains
import at.hannibal2.skyhanni.utils.ColorUtils
import at.hannibal2.skyhanni.utils.ColorUtils.darker
@@ -23,7 +24,9 @@ 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 at.hannibal2.skyhanni.utils.shader.ShaderManager
import io.github.notenoughupdates.moulconfig.gui.GuiScreenElementWrapper
+import io.github.moulberry.notenoughupdates.util.Utils
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.Gui
import net.minecraft.client.gui.GuiIngameMenu
@@ -327,6 +330,20 @@ interface Renderable {
}
}
+ fun Renderable.darken(amount: Float = 1.0f) = object : Renderable {
+ override val width = this@darken.width
+ override val height = this@darken.height
+ override val horizontalAlign = this@darken.horizontalAlign
+ override val verticalAlign = this@darken.verticalAlign
+
+ override fun render(posX: Int, posY: Int) {
+ DarkenShader.darknessLevel = amount
+ ShaderManager.enableShader("darken")
+ this@darken.render(posX, posY)
+ ShaderManager.disableShader()
+ }
+ }
+
fun singeltonString(string: String): List<Renderable> {
return Collections.singletonList(string(string))
}
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/shader/ShaderHelper.kt b/src/main/java/at/hannibal2/skyhanni/utils/shader/ShaderHelper.kt
index fdc34f0ae..89efd7d9f 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/shader/ShaderHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/shader/ShaderHelper.kt
@@ -137,6 +137,10 @@ class ShaderHelper {
if (USING_ARB_SHADERS) ARBShaderObjects.glUniform1fARB(location, v0) else GL20.glUniform1f(location, v0)
}
+ fun glUniform1i(location: Int, v0: Int) {
+ if (USING_ARB_SHADERS) ARBShaderObjects.glUniform1iARB(location, v0) else GL20.glUniform1i(location, v0)
+ }
+
fun glUniform2f(location: Int, v0: Float, v1: Float) {
if (USING_ARB_SHADERS) ARBShaderObjects.glUniform2fARB(location, v0, v1) else GL20.glUniform2f(
location,
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/shader/ShaderManager.kt b/src/main/java/at/hannibal2/skyhanni/utils/shader/ShaderManager.kt
index 3efcb0b77..b32e3fa26 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/shader/ShaderManager.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/shader/ShaderManager.kt
@@ -2,6 +2,7 @@ package at.hannibal2.skyhanni.utils.shader
import at.hannibal2.skyhanni.features.chroma.StandardChromaShader
import at.hannibal2.skyhanni.features.chroma.TexturedChromaShader
+import at.hannibal2.skyhanni.features.misc.DarkenShader
import at.hannibal2.skyhanni.features.misc.RoundedRectangleOutlineShader
import at.hannibal2.skyhanni.features.misc.RoundedRectangleShader
import at.hannibal2.skyhanni.test.command.ErrorManager
@@ -27,8 +28,11 @@ object ShaderManager {
TEXTURED_CHROMA(TexturedChromaShader.INSTANCE),
ROUNDED_RECTANGLE(RoundedRectangleShader.INSTANCE),
ROUNDED_RECT_OUTLINE(RoundedRectangleOutlineShader.INSTANCE),
+ DARKEN(DarkenShader.INSTANCE)
;
+ fun enableShader() = ShaderManager.enableShader(name.lowercase())
+
companion object {
fun getShaderInstance(shaderName: String): Shader? = when (shaderName) {
@@ -36,6 +40,7 @@ object ShaderManager {
"textured_chroma" -> TEXTURED_CHROMA.shader
"rounded_rect" -> ROUNDED_RECTANGLE.shader
"rounded_rect_outline" -> ROUNDED_RECT_OUTLINE.shader
+ "darken" -> DARKEN.shader
else -> {
null
}
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/shader/Uniform.kt b/src/main/java/at/hannibal2/skyhanni/utils/shader/Uniform.kt
index 78f9ef569..e3adf2b4d 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/shader/Uniform.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/shader/Uniform.kt
@@ -24,6 +24,7 @@ class Uniform<T>(
val VEC2: UniformType<FloatArray> = UniformType()
val VEC3: UniformType<FloatArray> = UniformType()
val BOOL: UniformType<Boolean> = UniformType()
+ val INT: UniformType<Int> = UniformType()
}
}
@@ -49,6 +50,7 @@ class Uniform<T>(
}
UniformType.BOOL -> ShaderHelper.glUniform1f(uniformID, if (newUniformValue as Boolean) 1f else 0f)
+ UniformType.INT -> ShaderHelper.glUniform1i(uniformID, (newUniformValue as Int))
}
previousUniformValue = newUniformValue
}