mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-16 00:26:07 +09:00
sign engraver wip 3
This commit is contained in:
@@ -18,7 +18,7 @@ class MakeSign : ConsoleCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val text = args[1]
|
val text = args[1]
|
||||||
val textLen = App.fontGame.getWidth(text)
|
val textLen = App.fontGame.getWidth(text) + 4
|
||||||
val panelCount = (args.getOrNull(2)?.toInt() ?: (textLen / TILE_SIZEF).ceilToInt()).coerceAtLeast(2)
|
val panelCount = (args.getOrNull(2)?.toInt() ?: (textLen / TILE_SIZEF).ceilToInt()).coerceAtLeast(2)
|
||||||
|
|
||||||
val actorInventory = INGAME.actorNowPlaying!!.inventory
|
val actorInventory = INGAME.actorNowPlaying!!.inventory
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ class FixtureTextSignCopper : Electric {
|
|||||||
batch.inUse { _ ->
|
batch.inUse { _ ->
|
||||||
blendNormalStraightAlpha(batch)
|
blendNormalStraightAlpha(batch)
|
||||||
val tw = App.fontGame.getWidth(text)
|
val tw = App.fontGame.getWidth(text)
|
||||||
App.fontGame.draw(batch, text, 0 + (it.width - tw) / 2, 3)
|
App.fontGame.draw(batch, text, 1 + (it.width - tw) / 2, 3)
|
||||||
|
|
||||||
|
|
||||||
blendAlphaMask(batch)
|
blendAlphaMask(batch)
|
||||||
|
|||||||
@@ -58,7 +58,17 @@ class UIEngravingTextSign : UICanvas(
|
|||||||
private val ingredientsWidth = UIItemInventoryElemSimple.height * 3 + 16
|
private val ingredientsWidth = UIItemInventoryElemSimple.height * 3 + 16
|
||||||
private val inputX = drawX + internalWidth - inputWidth + 5
|
private val inputX = drawX + internalWidth - inputWidth + 5
|
||||||
|
|
||||||
private val textInput = UIItemTextLineInput(this, inputX, row0, inputWidth)
|
private val textInput = UIItemTextLineInput(this, inputX, row0, inputWidth).also {
|
||||||
|
it.textCommitListener = { text ->
|
||||||
|
val textLen = App.fontGame.getWidth(text) + 4
|
||||||
|
val panelCountMin = (textLen / TILE_SIZEF).ceilToInt()
|
||||||
|
|
||||||
|
updateMinimumLen(panelCountMin)
|
||||||
|
panelCount = panelCountSpinner.value.toInt()
|
||||||
|
|
||||||
|
updatePanelText(text, panelCount)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private val COPPER_BULB = "item@basegame:35"
|
private val COPPER_BULB = "item@basegame:35"
|
||||||
private val ROCK_TILE = Block.STONE_TILE_WHITE
|
private val ROCK_TILE = Block.STONE_TILE_WHITE
|
||||||
@@ -71,6 +81,13 @@ class UIEngravingTextSign : UICanvas(
|
|||||||
private var fboBatch = SpriteBatch()
|
private var fboBatch = SpriteBatch()
|
||||||
private var fboCamera = OrthographicCamera(1f, 1f)
|
private var fboCamera = OrthographicCamera(1f, 1f)
|
||||||
|
|
||||||
|
private fun updateMinimumLen(mlen0: Int) {
|
||||||
|
val mlen = mlen0.coerceAtLeast(2).toDouble()
|
||||||
|
val delta = maxOf(panelCount.toDouble(), mlen) - panelCount.toDouble()
|
||||||
|
panelCountSpinner.changeValueBy(delta.toInt())
|
||||||
|
setIngredient(panelCountSpinner.value.toInt())
|
||||||
|
}
|
||||||
|
|
||||||
private fun updatePanelText(text: String, panelCount: Int) {
|
private fun updatePanelText(text: String, panelCount: Int) {
|
||||||
fboText.dispose()
|
fboText.dispose()
|
||||||
fboText = FrameBuffer(Pixmap.Format.RGBA8888, panelCount*TILE_SIZE, 2*TILE_SIZE, false)
|
fboText = FrameBuffer(Pixmap.Format.RGBA8888, panelCount*TILE_SIZE, 2*TILE_SIZE, false)
|
||||||
@@ -105,7 +122,7 @@ class UIEngravingTextSign : UICanvas(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// text
|
// text
|
||||||
batch.draw(fboText.colorBufferTexture, xStart, yStart, fboText.width * panelZoom, fboText.height * panelZoom)
|
batch.draw(fboText.colorBufferTexture, xStart + panelZoom, yStart, fboText.width * panelZoom, fboText.height * panelZoom)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setIngredient(num: Int) {
|
private fun setIngredient(num: Int) {
|
||||||
@@ -187,7 +204,6 @@ class UIEngravingTextSign : UICanvas(
|
|||||||
private var panelCount = panelCountSpinner.value.toInt()
|
private var panelCount = panelCountSpinner.value.toInt()
|
||||||
override fun updateImpl(delta: Float) {
|
override fun updateImpl(delta: Float) {
|
||||||
panelCount = panelCountSpinner.value.toInt()
|
panelCount = panelCountSpinner.value.toInt()
|
||||||
updatePanelText("Hello, world!", panelCount)
|
|
||||||
|
|
||||||
uiItems.forEach { it.update(delta) }
|
uiItems.forEach { it.update(delta) }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ class UIItemSpinner(
|
|||||||
parentUI: UICanvas,
|
parentUI: UICanvas,
|
||||||
initialX: Int, initialY: Int,
|
initialX: Int, initialY: Int,
|
||||||
private var initialValue: Number,
|
private var initialValue: Number,
|
||||||
val min: Number,
|
var min: Number,
|
||||||
val max: Number,
|
var max: Number,
|
||||||
val step: Number,
|
var step: Number,
|
||||||
override val width: Int,
|
override val width: Int,
|
||||||
private val drawBorder: Boolean = true,
|
private val drawBorder: Boolean = true,
|
||||||
private val numberToTextFunction: (Number) -> String = { "$it" }
|
private val numberToTextFunction: (Number) -> String = { "$it" }
|
||||||
@@ -86,6 +86,7 @@ class UIItemSpinner(
|
|||||||
fun changeValueBy(diff: Int) {
|
fun changeValueBy(diff: Int) {
|
||||||
currentIndex = (currentIndex + diff).coerceIn(values.indices)
|
currentIndex = (currentIndex + diff).coerceIn(values.indices)
|
||||||
value = values[currentIndex]
|
value = values[currentIndex]
|
||||||
|
fboUpdateLatch = true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun update(delta: Float) {
|
override fun update(delta: Float) {
|
||||||
|
|||||||
Reference in New Issue
Block a user