From 43ed3886153783b415e0c98fe31b968f0189d1b2 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 4 Dec 2021 17:50:31 +0900 Subject: [PATCH] y u wont render :( --- .../gameactors/FixtureHomeComputer.kt | 43 ++++++++++-------- .../terrarum-sans-bitmap/thai_variable.tga | 2 +- assets/mods/dwarventech/ModuleComputers.jar | Bin 454159 -> 454557 bytes .../terrarum/ui/UIItemTextLineInput.kt | 28 ++++++------ 4 files changed, 40 insertions(+), 33 deletions(-) diff --git a/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt b/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt index 409d28aa1..92eea9677 100644 --- a/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt +++ b/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt @@ -2,10 +2,10 @@ package net.torvald.terrarum.modulecomputers.gameactors import com.badlogic.gdx.Gdx import com.badlogic.gdx.Input -import com.badlogic.gdx.graphics.Camera -import com.badlogic.gdx.graphics.GL20 -import com.badlogic.gdx.graphics.OrthographicCamera +import com.badlogic.gdx.graphics.* import com.badlogic.gdx.graphics.g2d.SpriteBatch +import com.badlogic.gdx.graphics.glutils.FrameBuffer +import com.badlogic.gdx.math.Matrix4 import com.badlogic.gdx.utils.Disposable import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job @@ -92,42 +92,48 @@ internal class UIHomeComputer : UICanvas( private val drawOffX = (width - 560).div(2).toFloat() private val drawOffY = (height - 448).div(2).toFloat() - private lateinit var batch: SpriteBatch - private lateinit var camera: OrthographicCamera + private var batch: SpriteBatch + private var camera: OrthographicCamera internal lateinit var vm: VM init { batch = SpriteBatch() - camera = OrthographicCamera(width.toFloat(), height.toFloat()) - camera.setToOrtho(false) - camera.update() + camera = OrthographicCamera(560f, 448f) + //val m = Matrix4() + //m.setToOrtho2D(0f, 0f, width.toFloat(), height.toFloat()) batch.projectionMatrix = camera.combined } + private val fbo = FrameBuffer(Pixmap.Format.RGBA8888, 560, 448, true) + override fun updateUI(delta: Float) { } - override fun renderUI(otherBatch: SpriteBatch, camera: Camera) { + override fun renderUI(otherBatch: SpriteBatch, otherCamera: Camera) { otherBatch.end() - setCameraPosition(0f, 0f) - (vm.peripheralTable[1].peripheral as? GraphicsAdapter)?.let { gpu -> - val clearCol = gpu.getBackgroundColour() - Gdx.gl.glClearColor(clearCol.r, clearCol.g, clearCol.b, clearCol.a) - Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) - gpu.render(Gdx.graphics.deltaTime, batch, posX + drawOffX, posY + drawOffY) + fbo.inAction(otherCamera as OrthographicCamera, otherBatch) { + (vm.peripheralTable[1].peripheral as? GraphicsAdapter)?.let { gpu -> + val clearCol = gpu.getBackgroundColour() + Gdx.gl.glClearColor(0f,0f,0f,0f) + //Gdx.gl.glClearColor(clearCol.r, clearCol.g, clearCol.b, clearCol.a) + //Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) + gpu.render(Gdx.graphics.deltaTime, otherBatch, 0f, 0f, true) + } } otherBatch.begin() + otherBatch.color = Color.WHITE + otherBatch.draw(fbo.colorBufferTexture, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat()) otherBatch.color = Toolkit.Theme.COL_INACTIVE Toolkit.drawBoxBorder(otherBatch, posX - 1, posY - 1, width + 2, height + 2) } private fun setCameraPosition(newX: Float, newY: Float) { - camera.position.set((-newX + width / 2), (-newY + height / 2), 0f) // deliberate integer division - camera.update() - batch.projectionMatrix = camera.combined +// camera.position.set((-newX + width / 2), (-newY + height / 2), 0f) // deliberate integer division +// camera.update() +// batch.projectionMatrix = camera.combined } override fun doOpening(delta: Float) { @@ -143,6 +149,7 @@ internal class UIHomeComputer : UICanvas( } override fun dispose() { + fbo.dispose() } } \ No newline at end of file diff --git a/assets/graphics/fonts/terrarum-sans-bitmap/thai_variable.tga b/assets/graphics/fonts/terrarum-sans-bitmap/thai_variable.tga index fc31cd039..1c4c5be26 100755 --- a/assets/graphics/fonts/terrarum-sans-bitmap/thai_variable.tga +++ b/assets/graphics/fonts/terrarum-sans-bitmap/thai_variable.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4305c172f8b9ca7615fb9ef7d2543b6658ee10c29091b7209a58fd7fcaf62ecd +oid sha256:6fb73d354ee1bdd3b541d7512aeb6f13241373ede26319def3d37b93e1148a52 size 122898 diff --git a/assets/mods/dwarventech/ModuleComputers.jar b/assets/mods/dwarventech/ModuleComputers.jar index f0c61d03e4c395f0a4f6438915941bab441ba902..f066a88ea3840d2a1e2ab66c28b35296a3e62ea1 100644 GIT binary patch delta 8463 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 MEyxZZ1m08r2ahob8UO$Q delta 8192 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