Cacao: Add button tooltip
This commit is contained in:
parent
b435948ee3
commit
7cb0168c2f
|
@ -1,6 +1,7 @@
|
||||||
package net.shadowfacts.cacao.view.button
|
package net.shadowfacts.cacao.view.button
|
||||||
|
|
||||||
import net.minecraft.client.util.math.MatrixStack
|
import net.minecraft.client.util.math.MatrixStack
|
||||||
|
import net.minecraft.text.Text
|
||||||
import net.shadowfacts.cacao.geometry.Point
|
import net.shadowfacts.cacao.geometry.Point
|
||||||
import net.shadowfacts.cacao.util.MouseButton
|
import net.shadowfacts.cacao.util.MouseButton
|
||||||
import net.shadowfacts.cacao.util.texture.NinePatchTexture
|
import net.shadowfacts.cacao.util.texture.NinePatchTexture
|
||||||
|
@ -58,6 +59,11 @@ abstract class AbstractButton<Impl: AbstractButton<Impl>>(val content: View, val
|
||||||
*/
|
*/
|
||||||
var disabledBackground: View? = NinePatchView(NinePatchTexture.BUTTON_DISABLED_BG)
|
var disabledBackground: View? = NinePatchView(NinePatchTexture.BUTTON_DISABLED_BG)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The tooltip text shown when this button is hovered.
|
||||||
|
*/
|
||||||
|
var tooltip: Text? = null
|
||||||
|
|
||||||
override fun wasAdded() {
|
override fun wasAdded() {
|
||||||
solver.dsl {
|
solver.dsl {
|
||||||
addSubview(content)
|
addSubview(content)
|
||||||
|
@ -97,6 +103,10 @@ abstract class AbstractButton<Impl: AbstractButton<Impl>>(val content: View, val
|
||||||
// don't draw subviews, otherwise all background views + content will get drawn
|
// don't draw subviews, otherwise all background views + content will get drawn
|
||||||
|
|
||||||
RenderHelper.popMatrix()
|
RenderHelper.popMatrix()
|
||||||
|
|
||||||
|
if (tooltip != null && mouse in bounds) {
|
||||||
|
window!!.drawTooltip(listOf(tooltip!!))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mouseClicked(point: Point, mouseButton: MouseButton): Boolean {
|
override fun mouseClicked(point: Point, mouseButton: MouseButton): Boolean {
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package net.shadowfacts.phycon.block.terminal
|
package net.shadowfacts.phycon.block.terminal
|
||||||
|
|
||||||
import net.minecraft.client.util.math.MatrixStack
|
|
||||||
import net.shadowfacts.cacao.geometry.Point
|
import net.shadowfacts.cacao.geometry.Point
|
||||||
import net.shadowfacts.cacao.geometry.Size
|
import net.shadowfacts.cacao.geometry.Size
|
||||||
import net.shadowfacts.cacao.util.EnumHelper
|
import net.shadowfacts.cacao.util.EnumHelper
|
||||||
|
@ -31,14 +30,15 @@ class SettingButton<E>(
|
||||||
get() = content as TextureView
|
get() = content as TextureView
|
||||||
|
|
||||||
init {
|
init {
|
||||||
updateTexture()
|
update()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateTexture() {
|
private fun update() {
|
||||||
textureView.texture = textureCache.getOrPut(key.value) {
|
textureView.texture = textureCache.getOrPut(key.value) {
|
||||||
val uv = key.value.uv
|
val uv = key.value.uv
|
||||||
Texture(key.value.iconTexture, uv[0], uv[1])
|
Texture(key.value.iconTexture, uv[0], uv[1])
|
||||||
}
|
}
|
||||||
|
tooltip = key.value.tooltip
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mouseClicked(point: Point, mouseButton: MouseButton): Boolean {
|
override fun mouseClicked(point: Point, mouseButton: MouseButton): Boolean {
|
||||||
|
@ -53,20 +53,10 @@ class SettingButton<E>(
|
||||||
|
|
||||||
PhysicalConnectivityClient.terminalSettings[key] = newValue
|
PhysicalConnectivityClient.terminalSettings[key] = newValue
|
||||||
|
|
||||||
updateTexture()
|
update()
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.mouseClicked(point, mouseButton)
|
return super.mouseClicked(point, mouseButton)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun draw(matrixStack: MatrixStack, mouse: Point, delta: Float) {
|
|
||||||
super.draw(matrixStack, mouse, delta)
|
|
||||||
|
|
||||||
if (mouse in bounds) {
|
|
||||||
key.value.tooltip?.also {
|
|
||||||
window!!.drawTooltip(listOf(it))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue