From 2af916371b2edf71fb055a3f8de2bcd7b99b2251 Mon Sep 17 00:00:00 2001 From: Thunderblade73 <85900443+Thunderblade73@users.noreply.github.com> Date: Wed, 29 May 2024 23:00:20 +0200 Subject: Improvement: Added Mining Event Icons (#1305) Co-authored-by: Cal --- .../java/at/hannibal2/skyhanni/utils/ConfigUtils.kt | 13 +++++++++++++ .../hannibal2/skyhanni/utils/renderables/Renderable.kt | 17 +++++++++++++++++ .../at/hannibal2/skyhanni/utils/shader/ShaderHelper.kt | 4 ++++ .../at/hannibal2/skyhanni/utils/shader/ShaderManager.kt | 5 +++++ .../java/at/hannibal2/skyhanni/utils/shader/Uniform.kt | 2 ++ 5 files changed, 41 insertions(+) (limited to 'src/main/java/at/hannibal2/skyhanni/utils') 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 > 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 { 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( val VEC2: UniformType = UniformType() val VEC3: UniformType = UniformType() val BOOL: UniformType = UniformType() + val INT: UniformType = UniformType() } } @@ -49,6 +50,7 @@ class Uniform( } UniformType.BOOL -> ShaderHelper.glUniform1f(uniformID, if (newUniformValue as Boolean) 1f else 0f) + UniformType.INT -> ShaderHelper.glUniform1i(uniformID, (newUniformValue as Int)) } previousUniformValue = newUniformValue } -- cgit