ASMR/src/main/kotlin/net/shadowfacts/asmr/TestCacaoScreen.kt

121 lines
3.8 KiB
Kotlin

package net.shadowfacts.asmr
import net.minecraft.util.Identifier
import net.shadowfacts.asmr.util.RedstoneMode
import net.shadowfacts.kiwidsl.dsl
import net.shadowfacts.cacao.CacaoScreen
import net.shadowfacts.cacao.Window
import net.shadowfacts.cacao.geometry.Axis
import net.shadowfacts.cacao.geometry.Size
import net.shadowfacts.cacao.util.Color
import net.shadowfacts.cacao.util.texture.NinePatchTexture
import net.shadowfacts.cacao.util.texture.Texture
import net.shadowfacts.cacao.view.*
import net.shadowfacts.cacao.view.button.DropdownButton
/**
* @author shadowfacts
*/
class TestCacaoScreen: CacaoScreen() {
init {
addWindow(Window().apply {
val stack = addView(StackView(Axis.VERTICAL, StackView.Distribution.CENTER, spacing = 4.0).apply {
backgroundColor = Color.WHITE
})
val red = stack.addArrangedSubview(TextureView(Texture(Identifier("textures/block/birch_log_top.png"), 0, 0, 16, 16)).apply {
intrinsicContentSize = Size(50.0, 50.0)
})
val green = stack.addArrangedSubview(NinePatchView(NinePatchTexture.PANEL_BG).apply {
intrinsicContentSize = Size(75.0, 100.0)
})
val blue = stack.addArrangedSubview(View().apply {
intrinsicContentSize = Size(50.0, 50.0)
backgroundColor = Color(0x0000ff)
})
val purple = blue.addSubview(DropdownButton(
initialValue = RedstoneMode.HIGH,
allValues = RedstoneMode.values().asIterable(),
createView = { Label(it.name) },
updateView = { newValue, label -> label.text = newValue.name }
).apply {
handler = {
println("dropdown value: ${it.value}")
val dialog = DialogView(
"New redstone mode",
it.value.name,
arrayOf(DialogView.DefaultButtonType.OK),
Texture(Identifier("textures/block/birch_log_top.png"), 0, 0, 16, 16),
buttonCallback = { _, window ->
window.removeFromScreen()
}
)
val dialogWindow = Window()
dialogWindow.addView(dialog)
this@TestCacaoScreen.addWindow(dialogWindow)
}
})
val label = addView(Label("test ".repeat(100), maxLines = 5))
solver.dsl {
stack.topAnchor equalTo 0
stack.centerXAnchor equalTo this@apply.centerXAnchor
stack.widthAnchor equalTo 100
purple.centerXAnchor equalTo blue.centerXAnchor
purple.centerYAnchor equalTo blue.centerYAnchor
// purple.widthAnchor equalTo 50
label.topAnchor equalTo 0
label.leftAnchor equalTo 0
label.widthAnchor equalTo 100
}
// val red = addView(View().apply {
// backgroundColor = Color(0xff0000)
// })
// val green = addView(View().apply {
// backgroundColor = Color(0x00ff00)
// })
// val blue = addView(View().apply {
// backgroundColor = Color(0x0000ff)
// })
// val purple = green.addSubview(View().apply {
// backgroundColor = Color(0x800080)
// })
// purple.intrinsicContentSize = Size(width = 150.0, height = 150.0)
// val label = purple.addSubview(Label("Hello, world!").apply {
// textColor = Color.WHITE
// })
//
// solver.dsl {
// red.leftAnchor equalTo 0
// red.widthAnchor equalTo 200
// red.topAnchor equalTo 0
// red.heightAnchor equalTo 100
//
// green.leftAnchor equalTo (red.leftAnchor + red.widthAnchor + 20)
// green.widthAnchor equalTo red.widthAnchor
// green.topAnchor equalTo 0
// green.heightAnchor equalTo (red.heightAnchor + 100)
//
// blue.leftAnchor equalTo green.leftAnchor
// blue.widthAnchor equalTo green.widthAnchor
// blue.topAnchor equalTo (green.topAnchor + green.heightAnchor)
// blue.heightAnchor equalTo 50
//
//// purple.widthAnchor equalTo 100
//// purple.heightAnchor equalTo 100
// purple.centerXAnchor equalTo green.centerXAnchor
// purple.centerYAnchor equalTo green.centerYAnchor
//
// label.centerXAnchor equalTo purple.centerXAnchor
// label.centerYAnchor equalTo purple.centerYAnchor
// }
//
// layout()
})
}
}