Matter, but flowing
This commit is contained in:
parent
37234e6503
commit
93ffd8bbd3
@ -1,9 +1,14 @@
|
|||||||
package ru.dbotthepony.mc.otm.client.screen.widget
|
package ru.dbotthepony.mc.otm.client.screen.widget
|
||||||
|
|
||||||
import com.mojang.blaze3d.systems.RenderSystem
|
import com.mojang.blaze3d.systems.RenderSystem
|
||||||
|
import com.mojang.blaze3d.vertex.BufferUploader
|
||||||
|
import com.mojang.blaze3d.vertex.DefaultVertexFormat
|
||||||
import com.mojang.blaze3d.vertex.PoseStack
|
import com.mojang.blaze3d.vertex.PoseStack
|
||||||
|
import com.mojang.blaze3d.vertex.VertexFormat
|
||||||
import net.minecraft.ChatFormatting
|
import net.minecraft.ChatFormatting
|
||||||
|
import net.minecraft.client.renderer.GameRenderer
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
|
import org.lwjgl.opengl.GL11
|
||||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||||
import ru.dbotthepony.mc.otm.client.render.*
|
import ru.dbotthepony.mc.otm.client.render.*
|
||||||
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
import ru.dbotthepony.mc.otm.client.screen.MatteryScreen
|
||||||
@ -12,6 +17,9 @@ import ru.dbotthepony.mc.otm.core.formatMatterLevel
|
|||||||
import ru.dbotthepony.mc.otm.core.formatPowerLevel
|
import ru.dbotthepony.mc.otm.core.formatPowerLevel
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
|
||||||
import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget
|
import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget
|
||||||
|
import java.util.Random
|
||||||
|
import kotlin.math.cos
|
||||||
|
import kotlin.math.sin
|
||||||
|
|
||||||
open class PowerGaugePanel(
|
open class PowerGaugePanel(
|
||||||
screen: MatteryScreen<*>,
|
screen: MatteryScreen<*>,
|
||||||
@ -106,8 +114,42 @@ open class MatterGaugePanel(
|
|||||||
|
|
||||||
override fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
override fun innerRender(stack: PoseStack, mouseX: Float, mouseY: Float, partialTick: Float) {
|
||||||
GAUGE_BACKGROUND.render(stack)
|
GAUGE_BACKGROUND.render(stack)
|
||||||
val height = this.height * widget.percentage()
|
val height = this.height * (1f - widget.percentage())
|
||||||
GAUGE_FOREGROUND.renderPartial(stack, y = this.height - height, height = height, winding = UVWindingOrder.U0_V1_U1_V0)
|
|
||||||
|
RenderSystem.setShader(GameRenderer::getPositionTexShader)
|
||||||
|
RenderSystem.enableTexture()
|
||||||
|
RenderSystem.enableBlend()
|
||||||
|
RenderSystem.defaultBlendFunc()
|
||||||
|
RenderSystem.depthFunc(GL11.GL_ALWAYS)
|
||||||
|
|
||||||
|
RenderSystem.setShaderColor(1f, 1f, 1f, 1f)
|
||||||
|
|
||||||
|
val u0 = GAUGE_FOREGROUND.x / GAUGE_FOREGROUND.imageWidth
|
||||||
|
val u1 = (GAUGE_FOREGROUND.x + GAUGE_FOREGROUND.w) / GAUGE_FOREGROUND.imageWidth
|
||||||
|
val v1 = (GAUGE_FOREGROUND.y + GAUGE_FOREGROUND.h) / GAUGE_FOREGROUND.imageHeight
|
||||||
|
|
||||||
|
val matrix = stack.last().pose()
|
||||||
|
val builder = tesselator.builder
|
||||||
|
|
||||||
|
builder.begin(VertexFormat.Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION_TEX)
|
||||||
|
|
||||||
|
builder.vertex(matrix, 0f, this.height, 0f).uv(u0, v1).endVertex()
|
||||||
|
builder.vertex(matrix, width, this.height, 0f).uv(u1, v1).endVertex()
|
||||||
|
|
||||||
|
for (i in 4 downTo 0) {
|
||||||
|
val sin = sin((System.currentTimeMillis() / 50L + i * 2L).toDouble() / 4.0).toFloat()
|
||||||
|
val cos = cos((System.currentTimeMillis() / 50L + i * 3L + 27L).toDouble() / 4.0).toFloat()
|
||||||
|
|
||||||
|
val thisX = (width * (i / 4f))
|
||||||
|
val thisY = (height + sin + cos).coerceAtLeast(0f)
|
||||||
|
|
||||||
|
builder.vertex(matrix, thisX, thisY, 0f).uv(
|
||||||
|
(GAUGE_FOREGROUND.x + (i / 4f) * GAUGE_FOREGROUND.w) / GAUGE_FOREGROUND.imageWidth,
|
||||||
|
(GAUGE_FOREGROUND.y + thisY) / GAUGE_FOREGROUND.imageHeight,
|
||||||
|
).endVertex()
|
||||||
|
}
|
||||||
|
|
||||||
|
BufferUploader.drawWithShader(builder.end())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun innerRenderTooltips(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float): Boolean {
|
override fun innerRenderTooltips(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float): Boolean {
|
||||||
@ -164,7 +206,7 @@ open class PatternGaugePanel(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class ProgressGaugePanel @JvmOverloads constructor(
|
open class ProgressGaugePanel(
|
||||||
screen: MatteryScreen<*>,
|
screen: MatteryScreen<*>,
|
||||||
parent: EditablePanel? = null,
|
parent: EditablePanel? = null,
|
||||||
val widget: ProgressGaugeWidget,
|
val widget: ProgressGaugeWidget,
|
||||||
|
Loading…
Reference in New Issue
Block a user