49 lines
1.5 KiB
Kotlin
49 lines
1.5 KiB
Kotlin
package net.shadowfacts.phycon.client.screen.console
|
|
|
|
import net.minecraft.client.MinecraftClient
|
|
import net.minecraft.text.TranslatableText
|
|
import net.shadowfacts.cacao.util.Color
|
|
import net.shadowfacts.cacao.view.Label
|
|
import net.shadowfacts.cacao.view.button.EnumButton
|
|
import net.shadowfacts.cacao.viewcontroller.ViewController
|
|
import net.shadowfacts.kiwidsl.dsl
|
|
import net.shadowfacts.phycon.block.DeviceBlockEntity
|
|
import net.shadowfacts.phycon.component.ActivationController
|
|
import net.shadowfacts.phycon.networking.C2SConfigureDevice
|
|
import net.shadowfacts.phycon.util.ActivationMode
|
|
|
|
/**
|
|
* @author shadowfacts
|
|
*/
|
|
class ActivatableDeviceViewController<T>(
|
|
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(C2SConfigureDevice(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)
|
|
}
|
|
}
|
|
|
|
}
|