Files
Terrarum/src/net/torvald/terrarum/UIFakeGradOverlay.kt
2021-12-12 13:09:59 +09:00

103 lines
2.7 KiB
Kotlin

package net.torvald.terrarum
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.GL20
import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.random.HQRNG
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas
/**
* Created by minjaesong on 2021-09-09.
*/
class UIFakeGradOverlay : UICanvas() {
override var width: Int
get() = App.scr.width
set(value) {}
override var height: Int
get() = App.scr.height
set(value) {}
override var openCloseTime: Second = 0f
private val tex = CommonResourcePool.getAsTexture("title_halfgrad")
private val renderng = HQRNG()
init {
setAsAlwaysVisible()
}
override fun updateUI(delta: Float) {}
override fun renderUI(batch: SpriteBatch, camera: Camera) {
batch.end()
val dither = App.getConfigBoolean("fx_dither")
if (dither) {
App.getCurrentDitherTex().bind(1)
Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // so that batch that comes next will bind any tex to it
}
batch.begin()
batch.shader = null
if (dither) {
batch.shader.setUniformi("u_pattern", 1)
batch.shader.setUniformi("rnd", renderng.nextInt(8192), renderng.nextInt(8192))
}
blendMul(batch)
batch.draw(tex, 0f, 0f, App.scr.wf, App.scr.hf)
blendNormal(batch)
}
override fun doOpening(delta: Float) {}
override fun doClosing(delta: Float) {}
override fun endOpening(delta: Float) {}
override fun endClosing(delta: Float) {}
override fun dispose() {}
}
class UIFakeBlurOverlay(val blurRadius: Float, val nodarken: Boolean) : UICanvas() {
override var width: Int
get() = App.scr.width
set(value) {}
override var height: Int
get() = App.scr.height
set(value) {}
override var openCloseTime: Second = 0f
private val darken = Color(0.5f, 0.5f, 0.5f, 1f)
override fun updateUI(delta: Float) {}
override fun renderUI(batch: SpriteBatch, camera: Camera) {
if (App.getConfigBoolean("fx_backgroundblur")) {
Toolkit.blurEntireScreen(batch, camera as OrthographicCamera, blurRadius, 0, 0, width, height)
}
if (!nodarken) {
blendMul(batch)
batch.color = darken
Toolkit.fillArea(batch, 0, 0, width, height)
blendNormal(batch)
}
}
override fun doOpening(delta: Float) {}
override fun doClosing(delta: Float) {}
override fun endOpening(delta: Float) {}
override fun endClosing(delta: Float) {}
override fun dispose() {
}
}