Compare commits

...

2 Commits

Author SHA1 Message Date
Shadowfacts aa9181cfea
Add chat block 2019-08-11 23:41:47 -04:00
Shadowfacts 82bb799c64
Add Run button 2019-08-11 23:23:02 -04:00
5 changed files with 48 additions and 3 deletions

View File

@ -35,7 +35,9 @@ class ManagerBlock: Block(Settings.of(Material.METAL)), BlockEntityProvider {
@Environment(EnvType.CLIENT)
private fun openManagerUI(managerBlockEntity: ManagerBlockEntity) {
val vc = ManagerViewController(managerBlockEntity)
val screen = CacaoScreen()
val screen = object: CacaoScreen() {
override fun isPauseScreen() = false
}
try {
val window = screen.addWindow(Window(vc))
MinecraftClient.getInstance().openScreen(screen)

View File

@ -4,6 +4,7 @@ import net.minecraft.block.entity.BlockEntity
import net.shadowfacts.asmr.ASMR
import net.shadowfacts.asmr.program.Program
import net.shadowfacts.asmr.program.ProgramType.Companion.INT
import net.shadowfacts.asmr.program.blocks.ChatBlock
import net.shadowfacts.asmr.program.blocks.ConstantBlock
import net.shadowfacts.asmr.program.blocks.PrintBlock
import net.shadowfacts.asmr.program.blocks.math.BinaryOperatorBlock
@ -29,7 +30,7 @@ class ManagerBlockEntity: BlockEntity(ASMR.managerEntityType) {
// it.right.link(from = right.output)
it.position = Point(120.0, 0.0)
}
val print = program.addBlock(PrintBlock(INT)) {
val print = program.addBlock(ChatBlock(INT)) {
// it.input.link(from = divide.output)
it.position = Point(240.0, 0.0)
}

View File

@ -0,0 +1,30 @@
package net.shadowfacts.asmr.program.blocks
import net.minecraft.client.MinecraftClient
import net.minecraft.text.LiteralText
import net.minecraft.util.Identifier
import net.shadowfacts.asmr.ASMR
import net.shadowfacts.asmr.program.ProgramBlockInput
import net.shadowfacts.asmr.program.ProgramBlockOutput
import net.shadowfacts.asmr.program.ProgramType
import net.shadowfacts.asmr.program.execution.SimpleExecutableBlock
/**
* @author shadowfacts
*/
class ChatBlock<Type: Any>(
val type: ProgramType<Type>
): SimpleExecutableBlock(
Identifier(ASMR.modid, "chat")
) {
val input = ProgramBlockInput(Identifier(ASMR.modid, "chat.input"), type, this)
override val inputs: Array<ProgramBlockInput<*>> = arrayOf(input)
override val outputs: Array<ProgramBlockOutput<*>> = arrayOf()
override fun execute() {
MinecraftClient.getInstance().player.sendMessage(LiteralText(input.value.toString()))
}
}

View File

@ -8,6 +8,7 @@ import net.shadowfacts.cacao.util.texture.NinePatchTexture
import net.shadowfacts.cacao.view.Label
import net.shadowfacts.cacao.view.NinePatchView
import net.shadowfacts.cacao.view.View
import net.shadowfacts.cacao.view.button.Button
import net.shadowfacts.cacao.viewcontroller.ViewController
/**
@ -22,6 +23,12 @@ class ManagerViewController(val managerBlockEntity: ManagerBlockEntity): ViewCon
val background = panel.addSubview(NinePatchView(NinePatchTexture.PANEL_BG))
val label = panel.addSubview(Label("test label"))
val canvas = panel.addSubview(ProgramCanvasView(managerBlockEntity.program))
val runButton = panel.addSubview(Button(Label("Run"))).apply {
zIndex = 10.0
handler = {
managerBlockEntity.program.execute()
}
}
createConstraints {
panel.widthAnchor equalTo (view.widthAnchor - 20)
@ -41,6 +48,9 @@ class ManagerViewController(val managerBlockEntity: ManagerBlockEntity): ViewCon
canvas.heightAnchor equalTo (panel.heightAnchor - 8)
canvas.centerXAnchor equalTo panel.centerXAnchor
canvas.centerYAnchor equalTo panel.centerYAnchor
runButton.topAnchor equalTo panel.topAnchor
runButton.rightAnchor equalTo panel.rightAnchor
}
}

View File

@ -9,5 +9,7 @@
"programblock.asmr.binary_operator": "Binary Math Operator",
"programblock.param.asmr.binary_operator.left_operand": "Left Operand",
"programblock.param.asmr.binary_operator.right_operand": "Right Operand",
"programblock.param.asmr.binary_operator.result": "Result"
"programblock.param.asmr.binary_operator.result": "Result",
"programblock.asmr.chat": "Chat",
"programblock.param.asmr.chat.input": "Chat Value"
}