Visualize blocked/blocking research
This commit is contained in:
parent
435b8790b2
commit
65dd7cead9
@ -256,6 +256,13 @@ open class AndroidResearchType<R : AndroidResearch>(
|
||||
set.addAll(research.allUnlocks)
|
||||
}
|
||||
|
||||
for (research in allPrerequisites) {
|
||||
for (research2 in research.flatBlocking) {
|
||||
set.add(research2)
|
||||
set.addAll(research2.allUnlocks)
|
||||
}
|
||||
}
|
||||
|
||||
ListSet(set)
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.render
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.blaze3d.vertex.Tesselator
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer
|
||||
import com.mojang.math.Matrix4f
|
||||
import com.mojang.math.Vector3f
|
||||
@ -10,6 +11,8 @@ import net.minecraft.network.chat.Component
|
||||
import net.minecraft.util.FormattedCharSequence
|
||||
import ru.dbotthepony.mc.otm.core.*
|
||||
|
||||
val tesselator: Tesselator get() = Tesselator.getInstance()
|
||||
|
||||
fun VertexConsumer.normal(vector: Vector): VertexConsumer = normal(vector.x.toFloat(), vector.y.toFloat(), vector.z.toFloat())
|
||||
fun VertexConsumer.vertex(matrix4f: Matrix4f, vector: Vector): VertexConsumer = vertex(matrix4f, vector.x.toFloat(), vector.y.toFloat(), vector.z.toFloat())
|
||||
fun VertexConsumer.color(color: RGBAColor): VertexConsumer = color(color.red, color.green, color.blue, color.alpha)
|
||||
|
@ -40,7 +40,7 @@ fun drawTexturedRect(
|
||||
RenderSystem.defaultBlendFunc()
|
||||
RenderSystem.depthFunc(GL11.GL_ALWAYS)
|
||||
|
||||
val builder = Tesselator.getInstance().builder
|
||||
val builder = tesselator.builder
|
||||
|
||||
builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX)
|
||||
builder.vertex(matrix, x, y + height, zLevel).uv(u0, v1).endVertex()
|
||||
@ -105,7 +105,7 @@ fun colorSphere(matrix: Matrix4f, radius: Float) {
|
||||
RenderSystem.enableBlend()
|
||||
RenderSystem.defaultBlendFunc()
|
||||
|
||||
val builder = Tesselator.getInstance().builder
|
||||
val builder = tesselator.builder
|
||||
builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR)
|
||||
|
||||
val turnStep = Math.PI * (1 / fragments.toDouble()) * 2
|
||||
@ -299,7 +299,7 @@ fun drawRect(
|
||||
RenderSystem.setShader(GameRenderer::getPositionColorShader)
|
||||
RenderSystem.depthFunc(GL11.GL_ALWAYS)
|
||||
|
||||
val tess = Tesselator.getInstance()
|
||||
val tess = tesselator
|
||||
val builder = tess.builder
|
||||
|
||||
builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR)
|
||||
|
@ -20,6 +20,7 @@ import ru.dbotthepony.mc.otm.android.AndroidResearchType
|
||||
import ru.dbotthepony.mc.otm.capability.AndroidCapability
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryCapability
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.Widgets18
|
||||
import ru.dbotthepony.mc.otm.client.render.drawColor
|
||||
import ru.dbotthepony.mc.otm.client.render.drawLine
|
||||
import ru.dbotthepony.mc.otm.client.render.drawRect
|
||||
@ -281,7 +282,16 @@ private open class AndroidResearchButton(
|
||||
}
|
||||
|
||||
override fun innerRender(stack: PoseStack, mouse_x: Float, mouse_y: Float, flag: Float) {
|
||||
minecraft.player?.getCapability(MatteryCapability.ANDROID)?.ifPresentK {
|
||||
val hovered = (screen as AndroidStationScreen).hoveredResearch
|
||||
|
||||
val isBlockedByHovered = hovered != null && node.type in hovered.type.allBlocking
|
||||
|
||||
if (isBlockedByHovered) {
|
||||
AndroidStationScreen.CAN_NOT_BE_RESEARCHED.setSystemColor()
|
||||
|
||||
drawRect(stack, 0f, 0f, width, height)
|
||||
}
|
||||
|
||||
if (node.isResearched) {
|
||||
AndroidStationScreen.RESEARCHED.setSystemColor()
|
||||
} else if (node.canResearch) {
|
||||
@ -298,12 +308,17 @@ private open class AndroidResearchButton(
|
||||
drawRect(stack, 0f, 0f, width, height)
|
||||
}
|
||||
|
||||
if (isBlockedByHovered) {
|
||||
RGBAColor.RED.setSystemColor()
|
||||
|
||||
Widgets18.CROSS.render(stack)
|
||||
}
|
||||
|
||||
val text = node.iconText
|
||||
|
||||
if (text != null) {
|
||||
font.drawShadow(stack, text, width - font.width(text), height - font.lineHeight, -0x1)
|
||||
}
|
||||
}
|
||||
|
||||
drawColor = RGBAColor.WHITE
|
||||
RGBAColor.WHITE.setShaderColor()
|
||||
@ -316,7 +331,7 @@ private open class AndroidResearchButton(
|
||||
drawLine(stack, x1, y1, x2, y2, 0.5f)
|
||||
}
|
||||
|
||||
val hovered = (screen as AndroidStationScreen).hoveredResearch ?: return
|
||||
hovered ?: return
|
||||
val lines = highlightLines[hovered.type] ?: return
|
||||
|
||||
drawColor = RGBAColor.LIGHT_GREEN
|
||||
|
@ -53,6 +53,7 @@ data class RGBAColor(val red: Float, val green: Float, val blue: Float, val alph
|
||||
companion object {
|
||||
val BLACK = RGBAColor(0f, 0f, 0f, 1f)
|
||||
val WHITE = RGBAColor(1f, 1f, 1f, 1f)
|
||||
val RED = RGBAColor(1f, 0f, 0f)
|
||||
val GREEN = RGBAColor(0f, 1f, 0f, 1f)
|
||||
val LIGHT_GREEN = RGBAColor(136, 255, 124)
|
||||
val SLATE_GRAY = RGBAColor(64, 64, 64)
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Loading…
Reference in New Issue
Block a user