package net.shadowfacts.phycon.screen.console import net.minecraft.client.MinecraftClient import net.minecraft.text.TranslatableText import net.shadowfacts.cacao.geometry.Axis import net.shadowfacts.cacao.util.Color import net.shadowfacts.cacao.view.Label import net.shadowfacts.cacao.view.StackView import net.shadowfacts.cacao.view.button.EnumButton import net.shadowfacts.cacao.viewcontroller.ViewController import net.shadowfacts.kiwidsl.dsl import net.shadowfacts.phycon.network.DeviceBlockEntity import net.shadowfacts.phycon.network.component.ActivationController import net.shadowfacts.phycon.networking.C2SConfigureActivationMode import net.shadowfacts.phycon.util.ActivationMode /** * @author shadowfacts */ class ActivatableDeviceViewController( val device: T, ): ViewController() where T: DeviceBlockEntity, T: ActivationController.ActivatableDevice { override fun viewDidLoad() { super.viewDidLoad() val label = Label(TranslatableText("gui.phycon.console.remote.mode")).apply { textColor = Color.TEXT } view.addSubview(label) val mode = EnumButton(device.controller.activationMode, ActivationMode::friendlyName) mode.handler = { device.controller.activationMode = it.value MinecraftClient.getInstance().player!!.networkHandler.sendPacket(C2SConfigureActivationMode(device)) } view.addSubview(mode) view.solver.dsl { mode.widthAnchor equalTo 100 mode.heightAnchor equalTo 20 mode.topAnchor equalTo view.topAnchor mode.rightAnchor equalTo view.rightAnchor label.centerYAnchor equalTo mode.centerYAnchor label.rightAnchor equalTo (mode.leftAnchor - 4) } } }