Update Cacao README
This commit is contained in:
parent
91e40e346b
commit
ca3f2328f0
|
@ -3,6 +3,7 @@ package net.shadowfacts.asmr
|
||||||
import net.shadowfacts.cacao.CacaoScreen
|
import net.shadowfacts.cacao.CacaoScreen
|
||||||
import net.shadowfacts.cacao.Window
|
import net.shadowfacts.cacao.Window
|
||||||
import net.shadowfacts.cacao.view.*
|
import net.shadowfacts.cacao.view.*
|
||||||
|
import net.shadowfacts.cacao.view.button.Button
|
||||||
import net.shadowfacts.cacao.viewcontroller.ViewController
|
import net.shadowfacts.cacao.viewcontroller.ViewController
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,16 +18,20 @@ class TestCacaoScreen: CacaoScreen() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun viewDidLoad() {
|
override fun viewDidLoad() {
|
||||||
val labelContainer = view.addSubview(View())
|
val container = view.addSubview(View())
|
||||||
createConstraints {
|
createConstraints {
|
||||||
labelContainer.centerXAnchor equalTo view.centerXAnchor
|
container.centerXAnchor equalTo view.centerXAnchor
|
||||||
labelContainer.centerYAnchor equalTo view.centerYAnchor
|
container.centerYAnchor equalTo view.centerYAnchor
|
||||||
}
|
}
|
||||||
embedChild(object: ViewController() {
|
embedChild(object: ViewController() {
|
||||||
override fun loadView() {
|
override fun loadView() {
|
||||||
this.view = Label("test child")
|
val button = Button(Label("test button"))
|
||||||
|
button.handler = {
|
||||||
|
println("button clicked")
|
||||||
|
}
|
||||||
|
this.view = button
|
||||||
}
|
}
|
||||||
}, container = labelContainer)
|
}, container = container)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addWindow(Window(viewController))
|
addWindow(Window(viewController))
|
||||||
|
|
|
@ -8,6 +8,7 @@ enum class RedstoneMode {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun localize(value: RedstoneMode): String {
|
fun localize(value: RedstoneMode): String {
|
||||||
|
// todo: localize me
|
||||||
return value.name.toLowerCase().capitalize()
|
return value.name.toLowerCase().capitalize()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,33 @@
|
||||||
# Cacao
|
# Cacao
|
||||||
|
Cacao is a UI framework for Fabric/Minecraft mods based on Apple's [Cocoa](https://en.wikipedia.org/wiki/Cocoa_(API)
|
||||||
|
UI toolkit.
|
||||||
|
|
||||||
Cacao is a UI framework for Fabric/Minecraft mods based on Apple's [Cocoa](https://en.wikipedia.org/wiki/Cocoa_(API)) UI toolkit.
|
## Architecture
|
||||||
|
### Screen
|
||||||
|
A [CacaoScreen][] is the object that acts as the interface between Minecraft GUI code and the Cacao framework.
|
||||||
|
|
||||||
|
The CacaoScreen draws Cacao views on screen and passes Minecraft input events to the appropriate Views. The CacaoScreen
|
||||||
|
owns a group of [Window](#window) objects which are displayed on screen, one on top of the other.
|
||||||
|
|
||||||
|
[CacaoScreen]: https://git.shadowfacts.net/minecraft/ASMR/src/branch/master/src/main/kotlin/net/shadowfacts/cacao/CacaoScreen.kt
|
||||||
|
|
||||||
|
### Window
|
||||||
|
A [Window][] object has a root [View Controller](#view-controller) that it displays on screen.
|
||||||
|
|
||||||
|
The Window occupies the entire screen space and translates events from the screen to the root View Controller's View.
|
||||||
|
It owns a Solver object that manages layout constraints. The window also handles screen resizing and re-lays out the
|
||||||
|
view hierarchy.
|
||||||
|
|
||||||
|
[Window]: https://git.shadowfacts.net/minecraft/ASMR/src/branch/master/src/main/kotlin/net/shadowfacts/cacao/Window.kt
|
||||||
|
|
||||||
|
### View Controller
|
||||||
|
A [ViewController][] object owns a view, receives lifecycle events for it, and is generally used to control the view.
|
||||||
|
|
||||||
|
Each View Controller has a single root [View](#view) which in turn may have subviews.
|
||||||
|
|
||||||
|
[ViewController]: https://git.shadowfacts.net/minecraft/ASMR/src/branch/master/src/main/kotlin/net/shadowfacts/cacao/viewcontroller/ViewController.kt
|
||||||
|
|
||||||
|
### View
|
||||||
|
A [View][] object represents a single view on screen. It handles drawing, positioning, and directly handles input.
|
||||||
|
|
||||||
|
[View]: https://git.shadowfacts.net/minecraft/ASMR/src/branch/master/src/main/kotlin/net/shadowfacts/cacao/view/View.kt
|
||||||
|
|
Loading…
Reference in New Issue