mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-13 20:14:05 +09:00
F3 moved to PostProcessor; palette UI for buildingmaker
This commit is contained in:
@@ -12,6 +12,7 @@ import com.badlogic.gdx.graphics.glutils.ShaderProgram
|
||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer
|
||||
import com.badlogic.gdx.math.Matrix4
|
||||
import net.torvald.terrarum.gamecontroller.KeyToggler
|
||||
import net.torvald.terrarum.ui.BasicDebugInfoWindow
|
||||
|
||||
/**
|
||||
* Must be called by the App Loader
|
||||
@@ -34,12 +35,16 @@ object PostProcessor {
|
||||
private val safeAreaCol = Color(0xffffff66.toInt())
|
||||
private val safeAreaCol2 = Color(0xffffff44.toInt())
|
||||
|
||||
private val debugUI = BasicDebugInfoWindow()
|
||||
|
||||
fun draw(projMat: Matrix4, fbo: FrameBuffer) {
|
||||
|
||||
// init
|
||||
if (!init) {
|
||||
init = true
|
||||
|
||||
debugUI.setPosition(0, 0)
|
||||
|
||||
batch = SpriteBatch()
|
||||
camera = OrthographicCamera(AppLoader.screenW.toFloat(), AppLoader.screenH.toFloat())
|
||||
camera.setToOrtho(true)
|
||||
@@ -51,78 +56,96 @@ object PostProcessor {
|
||||
}
|
||||
|
||||
|
||||
debugUI.update(Gdx.graphics.deltaTime)
|
||||
|
||||
|
||||
AppLoader.measureDebugTime("Renderer.PostProcessor") {
|
||||
|
||||
gdxClearAndSetBlend(.094f, .094f, .094f, 0f)
|
||||
|
||||
val shader: ShaderProgram? =
|
||||
if (AppLoader.getConfigBoolean("fxdither"))
|
||||
AppLoader.shaderHicolour
|
||||
else
|
||||
null
|
||||
|
||||
fbo.colorBufferTexture.bind(0)
|
||||
|
||||
shader?.begin()
|
||||
shader?.setUniformMatrix("u_projTrans", projMat)
|
||||
shader?.setUniformi("u_texture", 0)
|
||||
AppLoader.fullscreenQuad.render(shader, GL20.GL_TRIANGLES)
|
||||
shader?.end()
|
||||
|
||||
|
||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // so that batch that comes next will bind any tex to it
|
||||
postShader(projMat, fbo)
|
||||
|
||||
if (AppLoader.IS_DEVELOPMENT_BUILD && KeyToggler.isOn(Input.Keys.F11)) {
|
||||
val tvSafeAreaW = AppLoader.getTvSafeGraphicsWidth().toFloat()
|
||||
val tvSafeAreaH = AppLoader.getTvSafeGraphicsHeight().toFloat()
|
||||
val tvSafeArea2W = AppLoader.getTvSafeActionWidth().toFloat()
|
||||
val tvSafeArea2H = AppLoader.getTvSafeActionHeight().toFloat()
|
||||
drawSafeArea()
|
||||
}
|
||||
|
||||
shapeRenderer.inUse(ShapeRenderer.ShapeType.Line) {
|
||||
shapeRenderer.color = safeAreaCol2
|
||||
shapeRenderer.rect(
|
||||
tvSafeArea2W, tvSafeArea2H, AppLoader.screenW - 2 * tvSafeArea2W, AppLoader.screenH - 2 * tvSafeArea2H
|
||||
)
|
||||
if (KeyToggler.isOn(Input.Keys.F3)) {
|
||||
if (!debugUI.isOpened && !debugUI.isOpening) debugUI.setAsOpen()
|
||||
batch.inUse { debugUI.renderUI(batch, camera) }
|
||||
}
|
||||
else {
|
||||
if (!debugUI.isClosed && !debugUI.isClosing) debugUI.setAsClose()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
shapeRenderer.color = safeAreaCol
|
||||
shapeRenderer.rect(
|
||||
tvSafeAreaW, tvSafeAreaH, AppLoader.screenW - 2 * tvSafeAreaW, AppLoader.screenH - 2 * tvSafeAreaH
|
||||
)
|
||||
private fun postShader(projMat: Matrix4, fbo: FrameBuffer) {
|
||||
val shader: ShaderProgram? =
|
||||
if (AppLoader.getConfigBoolean("fxdither"))
|
||||
AppLoader.shaderHicolour
|
||||
else
|
||||
null
|
||||
|
||||
shapeRenderer.color = defaultResCol
|
||||
shapeRenderer.rect(
|
||||
(AppLoader.screenW - AppLoader.minimumW).div(2).toFloat(),
|
||||
(AppLoader.screenH - AppLoader.minimumH).div(2).toFloat(),
|
||||
AppLoader.minimumW.toFloat(),
|
||||
AppLoader.minimumH.toFloat()
|
||||
)
|
||||
}
|
||||
fbo.colorBufferTexture.bind(0)
|
||||
|
||||
try {
|
||||
batch.inUse {
|
||||
batch.color = safeAreaCol
|
||||
AppLoader.fontSmallNumbers.draw(
|
||||
batch, safeAreaStr,
|
||||
tvSafeAreaW, tvSafeAreaH - 10
|
||||
)
|
||||
shader?.begin()
|
||||
shader?.setUniformMatrix("u_projTrans", projMat)
|
||||
shader?.setUniformi("u_texture", 0)
|
||||
AppLoader.fullscreenQuad.render(shader, GL20.GL_TRIANGLES)
|
||||
shader?.end()
|
||||
|
||||
batch.color = defaultResCol
|
||||
AppLoader.fontSmallNumbers.draw(
|
||||
batch, defaultResStr,
|
||||
(AppLoader.screenW - AppLoader.minimumW).div(2).toFloat(),
|
||||
(AppLoader.screenH - AppLoader.minimumH).div(2).minus(10).toFloat()
|
||||
)
|
||||
}
|
||||
}
|
||||
catch (doNothing: NullPointerException) { }
|
||||
finally {
|
||||
// one-time call, caused by catching NPE before batch ends
|
||||
if (batch.isDrawing) {
|
||||
batch.end()
|
||||
}
|
||||
}
|
||||
|
||||
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // so that batch that comes next will bind any tex to it
|
||||
|
||||
}
|
||||
|
||||
private fun drawSafeArea() {
|
||||
val tvSafeAreaW = AppLoader.getTvSafeGraphicsWidth().toFloat()
|
||||
val tvSafeAreaH = AppLoader.getTvSafeGraphicsHeight().toFloat()
|
||||
val tvSafeArea2W = AppLoader.getTvSafeActionWidth().toFloat()
|
||||
val tvSafeArea2H = AppLoader.getTvSafeActionHeight().toFloat()
|
||||
|
||||
shapeRenderer.inUse(ShapeRenderer.ShapeType.Line) {
|
||||
shapeRenderer.color = safeAreaCol2
|
||||
shapeRenderer.rect(
|
||||
tvSafeArea2W, tvSafeArea2H, AppLoader.screenW - 2 * tvSafeArea2W, AppLoader.screenH - 2 * tvSafeArea2H
|
||||
)
|
||||
|
||||
shapeRenderer.color = safeAreaCol
|
||||
shapeRenderer.rect(
|
||||
tvSafeAreaW, tvSafeAreaH, AppLoader.screenW - 2 * tvSafeAreaW, AppLoader.screenH - 2 * tvSafeAreaH
|
||||
)
|
||||
|
||||
shapeRenderer.color = defaultResCol
|
||||
shapeRenderer.rect(
|
||||
(AppLoader.screenW - AppLoader.minimumW).div(2).toFloat(),
|
||||
(AppLoader.screenH - AppLoader.minimumH).div(2).toFloat(),
|
||||
AppLoader.minimumW.toFloat(),
|
||||
AppLoader.minimumH.toFloat()
|
||||
)
|
||||
}
|
||||
|
||||
try {
|
||||
batch.inUse {
|
||||
batch.color = safeAreaCol
|
||||
AppLoader.fontSmallNumbers.draw(
|
||||
batch, safeAreaStr,
|
||||
tvSafeAreaW, tvSafeAreaH - 10
|
||||
)
|
||||
|
||||
batch.color = defaultResCol
|
||||
AppLoader.fontSmallNumbers.draw(
|
||||
batch, defaultResStr,
|
||||
(AppLoader.screenW - AppLoader.minimumW).div(2).toFloat(),
|
||||
(AppLoader.screenH - AppLoader.minimumH).div(2).minus(10).toFloat()
|
||||
)
|
||||
}
|
||||
}
|
||||
catch (doNothing: NullPointerException) { }
|
||||
finally {
|
||||
// one-time call, caused by catching NPE before batch ends
|
||||
if (batch.isDrawing) {
|
||||
batch.end()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user