mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
default ui open/close transition is now quick-fade
This commit is contained in:
@@ -7,7 +7,6 @@ import net.torvald.terrarum.ui.UICanvas
|
||||
|
||||
class ModOptionsHost(val remoCon: UIRemoCon) : UICanvas() {
|
||||
|
||||
override var openCloseTime: Second = 0f
|
||||
|
||||
private val moduleAreaHMargin = 48
|
||||
private val moduleAreaBorder = 8
|
||||
@@ -21,18 +20,6 @@ class ModOptionsHost(val remoCon: UIRemoCon) : UICanvas() {
|
||||
override fun renderUI(batch: SpriteBatch, camera: Camera) {
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ 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 com.jme3.math.FastMath
|
||||
import net.torvald.random.HQRNG
|
||||
import net.torvald.terrarum.ui.Toolkit
|
||||
import net.torvald.terrarum.ui.UICanvas
|
||||
@@ -75,29 +76,51 @@ class UIFakeBlurOverlay(val blurRadius: Float, val nodarken: Boolean) : UICanvas
|
||||
get() = App.scr.height
|
||||
set(value) {}
|
||||
|
||||
override var openCloseTime: Second = 0f
|
||||
override var openCloseTime: Second = OPENCLOSE_GENERIC
|
||||
|
||||
private val darken = Color(0.5f, 0.5f, 0.5f, 1f)
|
||||
|
||||
private val darkeningVarCol = Color(255)
|
||||
private val batchDrawCol = Color(-1)
|
||||
|
||||
override fun updateUI(delta: Float) {}
|
||||
override fun renderUI(batch: SpriteBatch, camera: Camera) {
|
||||
batchDrawCol.a = openness
|
||||
batch.color = batchDrawCol
|
||||
if (App.getConfigBoolean("fx_backgroundblur")) {
|
||||
Toolkit.blurEntireScreen(batch, camera as OrthographicCamera, blurRadius, 0, 0, width, height)
|
||||
Toolkit.blurEntireScreen(batch, camera as OrthographicCamera, blurRadius * openness, 0, 0, width, height)
|
||||
}
|
||||
|
||||
if (!nodarken) {
|
||||
blendMul(batch)
|
||||
batch.color = darken
|
||||
darkeningVarCol.r = FastMath.interpolateLinear(openness, 1f, 0.5f)
|
||||
darkeningVarCol.g = FastMath.interpolateLinear(openness, 1f, 0.5f)
|
||||
darkeningVarCol.b = FastMath.interpolateLinear(openness, 1f, 0.5f)
|
||||
batch.color = darkeningVarCol
|
||||
Toolkit.fillArea(batch, 0, 0, width, height)
|
||||
|
||||
blendNormalStraightAlpha(batch)
|
||||
}
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {}
|
||||
override fun doClosing(delta: Float) {}
|
||||
override fun endOpening(delta: Float) {}
|
||||
override fun endClosing(delta: Float) {}
|
||||
private var openness = 0f // 0-closed, 1-opened
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
openness = handler.openCloseCounter / openCloseTime
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
openness = (openCloseTime - handler.openCloseCounter) / openCloseTime
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
openness = 1f
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
openness = 0f
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
}
|
||||
}
|
||||
@@ -77,7 +77,6 @@ internal class UIStorageChest : UICanvas(
|
||||
|
||||
override var width = App.scr.width
|
||||
override var height = App.scr.height
|
||||
override var openCloseTime: Second = 0.0f
|
||||
|
||||
private val negotiator = object : InventoryTransactionNegotiator() {
|
||||
override fun accept(player: FixtureInventory, fixture: FixtureInventory, item: GameItem, amount: Long) {
|
||||
@@ -227,7 +226,7 @@ internal class UIStorageChest : UICanvas(
|
||||
|
||||
override fun renderUI(batch: SpriteBatch, camera: Camera) {
|
||||
// background fill
|
||||
UIInventoryFull.drawBackground(batch)
|
||||
UIInventoryFull.drawBackground(batch, handler.opacity)
|
||||
|
||||
// UI items
|
||||
batch.color = Color.WHITE
|
||||
|
||||
@@ -33,7 +33,6 @@ class UICrafting(val full: UIInventoryFull) : UICanvas(), HasInventory {
|
||||
|
||||
override var width = App.scr.width
|
||||
override var height = App.scr.height
|
||||
override var openCloseTime: Second = 0.0f
|
||||
|
||||
private val itemListPlayer: UIItemInventoryItemGrid
|
||||
private val itemListCraftable: UIItemCraftingCandidateGrid // might be changed to something else
|
||||
@@ -515,21 +514,24 @@ class UICrafting(val full: UIInventoryFull) : UICanvas(), HasInventory {
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
super.doOpening(delta)
|
||||
resetUI()
|
||||
|
||||
INGAME.setTooltipMessage(null)
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
super.doClosing(delta)
|
||||
INGAME.setTooltipMessage(null)
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
super.endOpening(delta)
|
||||
UIItemInventoryItemGrid.tooltipShowing.clear()
|
||||
INGAME.setTooltipMessage(null) // required!
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
super.endClosing(delta)
|
||||
resetUI()
|
||||
UIItemInventoryItemGrid.tooltipShowing.clear()
|
||||
INGAME.setTooltipMessage(null) // required!
|
||||
|
||||
@@ -18,7 +18,6 @@ class UIGraphicsControlPanel(remoCon: UIRemoCon?) : UICanvas() {
|
||||
|
||||
override var width = 400
|
||||
override var height = 400
|
||||
override var openCloseTime = 0f
|
||||
|
||||
private val spinnerWidth = 140
|
||||
private val drawX = (Toolkit.drawWidth - width) / 2
|
||||
@@ -141,26 +140,6 @@ class UIGraphicsControlPanel(remoCon: UIRemoCon?) : UICanvas() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun show() {
|
||||
super.show()
|
||||
}
|
||||
|
||||
override fun hide() {
|
||||
super.hide()
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,6 @@ class UIIMEConfig(remoCon: UIRemoCon?) : UICanvas() {
|
||||
|
||||
override var width = 480
|
||||
override var height = 600
|
||||
override var openCloseTime = 0f
|
||||
|
||||
|
||||
private val drawX = (Toolkit.drawWidth - width) / 2
|
||||
@@ -208,18 +207,6 @@ class UIIMEConfig(remoCon: UIRemoCon?) : UICanvas() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.badlogic.gdx.graphics.Camera
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.App.printdbg
|
||||
import net.torvald.terrarum.langpack.Lang
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory
|
||||
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.CELLS_HOR
|
||||
@@ -23,7 +24,6 @@ internal class UIInventoryCells(
|
||||
|
||||
override var width: Int = Toolkit.drawWidth
|
||||
override var height: Int = App.scr.height
|
||||
override var openCloseTime: Second = 0.0f
|
||||
|
||||
companion object {
|
||||
val weightBarWidth = UIItemInventoryElemSimple.height * 2f + UIItemInventoryItemGrid.listGap
|
||||
@@ -144,16 +144,9 @@ internal class UIInventoryCells(
|
||||
INGAME.setTooltipMessage(null)
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
super.endClosing(delta)
|
||||
UIItemInventoryItemGrid.tooltipShowing.clear()
|
||||
INGAME.setTooltipMessage(null)
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
|
||||
|
||||
override var width: Int = Toolkit.drawWidth
|
||||
override var height: Int = App.scr.height
|
||||
override var openCloseTime = 0.0f
|
||||
|
||||
private val gameMenu = arrayOf(
|
||||
"MENU_IO_SAVE_GAME",
|
||||
@@ -300,18 +299,18 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
super.doClosing(delta)
|
||||
screen = 0
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
super.endOpening(delta)
|
||||
INGAME.setTooltipMessage(null)
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
super.endClosing(delta)
|
||||
screen = 0
|
||||
UIItemInventoryItemGrid.tooltipShowing.clear()
|
||||
INGAME.setTooltipMessage(null)
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.badlogic.gdx.graphics.Camera
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer
|
||||
import com.jme3.math.FastMath
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.App.*
|
||||
import net.torvald.terrarum.langpack.Lang
|
||||
@@ -29,7 +30,6 @@ class UIInventoryFull(
|
||||
|
||||
override var width: Int = Toolkit.drawWidth
|
||||
override var height: Int = App.scr.height
|
||||
override var openCloseTime: Second = 0.0f
|
||||
|
||||
companion object {
|
||||
private var shapeRenderer: ShapeRenderer? = null
|
||||
@@ -63,7 +63,10 @@ class UIInventoryFull(
|
||||
|
||||
val controlHelpHeight = App.fontGame.lineHeight
|
||||
|
||||
fun drawBackground(batch: SpriteBatch) {
|
||||
private val gsta = Color(gradStartCol)
|
||||
private val gend = Color(gradEndCol)
|
||||
|
||||
fun drawBackground(batch: SpriteBatch, opacity: Float) {
|
||||
batch.end()
|
||||
gdxBlendNormalStraightAlpha()
|
||||
|
||||
@@ -82,15 +85,17 @@ class UIInventoryFull(
|
||||
val w = App.scr.wf * magn
|
||||
val h = App.scr.hf * magn
|
||||
|
||||
gsta.a = 0.375f * opacity
|
||||
gend.a = 0.4375f * opacity
|
||||
shapeRenderer!!.inUse {
|
||||
// shaperender starts at bottom-left!
|
||||
it.rect(0f, gradTopStart, w, gradHeight, gradStartCol, gradStartCol, gradEndCol, gradEndCol)
|
||||
it.rect(0f, gradBottomEnd, w, -gradHeight, gradStartCol, gradStartCol, gradEndCol, gradEndCol)
|
||||
it.rect(0f, gradTopStart, w, gradHeight, gsta, gsta, gend, gend)
|
||||
it.rect(0f, gradBottomEnd, w, -gradHeight, gsta, gsta, gend, gend)
|
||||
|
||||
it.rect(0f, gradTopStart + gradHeight, w, gradHeightFlat, gradEndCol, gradEndCol, gradEndCol, gradEndCol)
|
||||
it.rect(0f, gradTopStart + gradHeight, w, gradHeightFlat, gend, gend, gend, gend)
|
||||
|
||||
it.rect(0f, 0f, w, gradTopStart, gradStartCol, gradStartCol, gradStartCol, gradStartCol)
|
||||
it.rect(0f, h, w, -(h - gradBottomEnd), gradStartCol, gradStartCol, gradStartCol, gradStartCol)
|
||||
it.rect(0f, 0f, w, gradTopStart, gsta, gsta, gsta, gsta)
|
||||
it.rect(0f, h, w, -(h - gradBottomEnd), gsta, gsta, gsta, gsta)
|
||||
}
|
||||
|
||||
batch.begin()
|
||||
@@ -275,7 +280,7 @@ class UIInventoryFull(
|
||||
|
||||
override fun renderUI(batch: SpriteBatch, camera: Camera) {
|
||||
|
||||
drawBackground(batch)
|
||||
drawBackground(batch, handler.opacity)
|
||||
|
||||
// UI items
|
||||
catBar.render(batch, camera)
|
||||
@@ -308,19 +313,28 @@ class UIInventoryFull(
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
super.doOpening(delta)
|
||||
transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) }
|
||||
INGAME.pause()
|
||||
INGAME.setTooltipMessage(null)
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
super.doClosing(delta)
|
||||
transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) }
|
||||
INGAME.resume()
|
||||
INGAME.setTooltipMessage(null)
|
||||
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
super.endOpening(delta)
|
||||
transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) }
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
super.endClosing(delta)
|
||||
transitionPanel.uis.forEach { it.opacity = FastMath.pow(opacity, 0.5f) }
|
||||
INGAME.setTooltipMessage(null) // required!
|
||||
// MinimapComposer.revalidateAll()
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ class UIKeyboardControlPanel(remoCon: UIRemoCon?) : UICanvas() {
|
||||
|
||||
override var width = 480
|
||||
override var height = 600
|
||||
override var openCloseTime = 0f
|
||||
|
||||
|
||||
private val drawX = (Toolkit.drawWidth - width) / 2
|
||||
@@ -231,18 +230,6 @@ class UIKeyboardControlPanel(remoCon: UIRemoCon?) : UICanvas() {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
}
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ class UILoadDemoSavefiles(val remoCon: UIRemoCon) : UICanvas() {
|
||||
override var height: Int
|
||||
get() = App.scr.height
|
||||
set(value) {}
|
||||
override var openCloseTime: Second = 0f
|
||||
override var openCloseTime: Second = OPENCLOSE_GENERIC
|
||||
|
||||
|
||||
private val shapeRenderer = ShapeRenderer()
|
||||
@@ -434,16 +434,8 @@ class UILoadDemoSavefiles(val remoCon: UIRemoCon) : UICanvas() {
|
||||
return true
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
super.endClosing(delta)
|
||||
listScroll = 0
|
||||
scrollTarget = 0
|
||||
uiScroll = 0f
|
||||
|
||||
@@ -25,7 +25,6 @@ class UINewCharacter(val remoCon: UIRemoCon) : UICanvas() {
|
||||
|
||||
override var width = 480
|
||||
override var height = 480
|
||||
override var openCloseTime: Second = 0f
|
||||
|
||||
private val drawX = (Toolkit.drawWidth - width) / 2
|
||||
private val drawY = (App.scr.height - height) / 2
|
||||
@@ -117,18 +116,6 @@ class UINewCharacter(val remoCon: UIRemoCon) : UICanvas() {
|
||||
uiItems.forEach { it.render(batch, camera) }
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
|
||||
}
|
||||
|
||||
@@ -38,7 +38,6 @@ class UINewWorld(val remoCon: UIRemoCon) : UICanvas() {
|
||||
|
||||
override var width = 480
|
||||
override var height = 480
|
||||
override var openCloseTime: Second = 0f
|
||||
|
||||
private val drawX = (Toolkit.drawWidth - width) / 2
|
||||
private val drawY = (App.scr.height - height) / 2
|
||||
@@ -156,18 +155,6 @@ class UINewWorld(val remoCon: UIRemoCon) : UICanvas() {
|
||||
uiItems.forEach { it.render(batch, camera) }
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
hugeTex.texture.dispose()
|
||||
largeTex.texture.dispose()
|
||||
|
||||
@@ -144,23 +144,6 @@ class UIQuickslotBar : UICanvas() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
handler.opacity = handler.openCloseCounter / openCloseTime
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
handler.opacity = (openCloseTime - handler.openCloseCounter) / openCloseTime
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
handler.opacity = 1f
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
handler.opacity = 0f
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
}
|
||||
|
||||
|
||||
@@ -18,8 +18,6 @@ class UITitleLanguage(remoCon: UIRemoCon?) : UICanvas() {
|
||||
)
|
||||
|
||||
|
||||
override var openCloseTime: Second = 0f
|
||||
|
||||
|
||||
private val textButtonLineHeight = 32
|
||||
|
||||
@@ -120,17 +118,6 @@ class UITitleLanguage(remoCon: UIRemoCon?) : UICanvas() {
|
||||
initialMouseBlock = true
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ class UITitleModules(val remoCon: UIRemoCon) : UICanvas() {
|
||||
override var height: Int
|
||||
get() = App.scr.height
|
||||
set(value) {}
|
||||
override var openCloseTime: Second = 0f
|
||||
|
||||
|
||||
|
||||
@@ -236,16 +235,9 @@ class UITitleModules(val remoCon: UIRemoCon) : UICanvas() {
|
||||
}
|
||||
return true
|
||||
}
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
super.endClosing(delta)
|
||||
listScroll = 0
|
||||
scrollTarget = 0
|
||||
uiScroll = 0f
|
||||
|
||||
@@ -11,8 +11,6 @@ import net.torvald.terrarum.ui.UIItemTextArea
|
||||
|
||||
open class UITitleWallOfText(private val text: List<String>) : UICanvas() {
|
||||
|
||||
override var openCloseTime: Second = 0f
|
||||
|
||||
|
||||
private val textAreaHMargin = 48
|
||||
override var width = 600
|
||||
@@ -40,18 +38,6 @@ open class UITitleWallOfText(private val text: List<String>) : UICanvas() {
|
||||
//AppLoader.printdbg(this, "Rendering texts of length ${text.size}")
|
||||
}
|
||||
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun dispose() {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import com.badlogic.gdx.graphics.g2d.TextureRegion
|
||||
import com.badlogic.gdx.graphics.glutils.FloatFrameBuffer
|
||||
import com.badlogic.gdx.utils.Disposable
|
||||
import com.jme3.math.FastMath
|
||||
import net.torvald.random.HQRNG
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||
@@ -167,13 +168,60 @@ object Toolkit : Disposable {
|
||||
fun blurEntireScreen(batch: SpriteBatch, camera: OrthographicCamera, blurRadius0: Float, x: Int, y: Int, w: Int, h: Int) {
|
||||
batch.end()
|
||||
|
||||
val blurRadius = blurRadius0
|
||||
val blurRadius = FastMath.pow(blurRadius0, 0.5f)
|
||||
val renderTarget = FrameBufferManager.peek()
|
||||
|
||||
/*fboBlurHalf.inAction(camera, batch) {
|
||||
blurtex0 = renderTarget.colorBufferTexture
|
||||
blurtex0.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
|
||||
blurtex0.bind(0)
|
||||
/*if (blurRadius > 3f) {
|
||||
val radius3 = (blurRadius - 3f) / 8f
|
||||
fboBlurHalf.inAction(camera, batch) {
|
||||
blurtex0 = renderTarget.colorBufferTexture
|
||||
blurtex0.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
|
||||
blurtex0.bind(0)
|
||||
shaderKawaseDown.bind()
|
||||
shaderKawaseDown.setUniformMatrix("u_projTrans", camera.combined)
|
||||
shaderKawaseDown.setUniformi("u_texture", 0)
|
||||
shaderKawaseDown.setUniformf("halfpixel", radius3 / fboBlurHalf.width, radius3 / fboBlurHalf.height)
|
||||
blurWriteQuad2.render(shaderKawaseDown, GL20.GL_TRIANGLES)
|
||||
}
|
||||
|
||||
fboBlurQuarter.inAction(camera, batch) {
|
||||
blurtex1 = fboBlurHalf.colorBufferTexture
|
||||
blurtex1.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
|
||||
blurtex1.bind(0)
|
||||
shaderKawaseDown.bind()
|
||||
shaderKawaseDown.setUniformMatrix("u_projTrans", camera.combined)
|
||||
shaderKawaseDown.setUniformi("u_texture", 0)
|
||||
shaderKawaseDown.setUniformf("halfpixel", radius3 / fboBlurQuarter.width, radius3 / fboBlurQuarter.height)
|
||||
blurWriteQuad4.render(shaderKawaseDown, GL20.GL_TRIANGLES)
|
||||
}
|
||||
|
||||
fboBlurHalf.inAction(camera, batch) {
|
||||
blurtex2 = fboBlurQuarter.colorBufferTexture
|
||||
blurtex2.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
|
||||
blurtex2.bind(0)
|
||||
shaderKawaseUp.bind()
|
||||
shaderKawaseUp.setUniformMatrix("u_projTrans", camera.combined)
|
||||
shaderKawaseUp.setUniformi("u_texture", 0)
|
||||
shaderKawaseUp.setUniformf("halfpixel", radius3 / fboBlurQuarter.width, radius3 / fboBlurQuarter.height)
|
||||
blurWriteQuad2.render(shaderKawaseUp, GL20.GL_TRIANGLES)
|
||||
}
|
||||
|
||||
fboBlur.inAction(camera, batch) {
|
||||
blurtex3 = fboBlurHalf.colorBufferTexture
|
||||
blurtex3.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
|
||||
blurtex3.bind(0)
|
||||
shaderKawaseUp.bind()
|
||||
shaderKawaseUp.setUniformMatrix("u_projTrans", camera.combined)
|
||||
shaderKawaseUp.setUniformi("u_texture", 0)
|
||||
shaderKawaseUp.setUniformf("halfpixel", radius3 / fboBlurHalf.width, radius3 / fboBlurHalf.height)
|
||||
blurWriteQuad.render(shaderKawaseUp, GL20.GL_TRIANGLES)
|
||||
}
|
||||
}*/
|
||||
|
||||
fboBlurHalf.inAction(camera, batch) {
|
||||
blurtex2 = renderTarget.colorBufferTexture
|
||||
blurtex2.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
|
||||
blurtex2.bind(0)
|
||||
shaderKawaseDown.bind()
|
||||
shaderKawaseDown.setUniformMatrix("u_projTrans", camera.combined)
|
||||
shaderKawaseDown.setUniformi("u_texture", 0)
|
||||
@@ -181,29 +229,7 @@ object Toolkit : Disposable {
|
||||
blurWriteQuad2.render(shaderKawaseDown, GL20.GL_TRIANGLES)
|
||||
}
|
||||
|
||||
fboBlurQuarter.inAction(camera, batch) {
|
||||
blurtex1 = fboBlurHalf.colorBufferTexture
|
||||
blurtex1.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
|
||||
blurtex1.bind(0)
|
||||
shaderKawaseDown.bind()
|
||||
shaderKawaseDown.setUniformMatrix("u_projTrans", camera.combined)
|
||||
shaderKawaseDown.setUniformi("u_texture", 0)
|
||||
shaderKawaseDown.setUniformf("halfpixel", blurRadius / fboBlurQuarter.width, blurRadius / fboBlurQuarter.height)
|
||||
blurWriteQuad4.render(shaderKawaseDown, GL20.GL_TRIANGLES)
|
||||
}
|
||||
|
||||
fboBlurHalf.inAction(camera, batch) {
|
||||
blurtex2 = fboBlurQuarter.colorBufferTexture
|
||||
blurtex2.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
|
||||
blurtex2.bind(0)
|
||||
shaderKawaseUp.bind()
|
||||
shaderKawaseUp.setUniformMatrix("u_projTrans", camera.combined)
|
||||
shaderKawaseUp.setUniformi("u_texture", 0)
|
||||
shaderKawaseUp.setUniformf("halfpixel", blurRadius / fboBlurQuarter.width, blurRadius / fboBlurQuarter.height)
|
||||
blurWriteQuad2.render(shaderKawaseUp, GL20.GL_TRIANGLES)
|
||||
}
|
||||
|
||||
fboBlur.inAction(camera, batch) {
|
||||
fboBlur.inAction(camera, batch) {
|
||||
blurtex3 = fboBlurHalf.colorBufferTexture
|
||||
blurtex3.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
|
||||
blurtex3.bind(0)
|
||||
@@ -212,30 +238,6 @@ object Toolkit : Disposable {
|
||||
shaderKawaseUp.setUniformi("u_texture", 0)
|
||||
shaderKawaseUp.setUniformf("halfpixel", blurRadius / fboBlurHalf.width, blurRadius / fboBlurHalf.height)
|
||||
blurWriteQuad.render(shaderKawaseUp, GL20.GL_TRIANGLES)
|
||||
}*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
fboBlurHalf.inAction(camera, batch) {
|
||||
blurtex2 = renderTarget.colorBufferTexture
|
||||
blurtex2.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
|
||||
blurtex2.bind(0)
|
||||
shaderBoxDown.bind()
|
||||
shaderBoxDown.setUniformMatrix("u_projTrans", camera.combined)
|
||||
shaderBoxDown.setUniformi("u_texture", 0)
|
||||
shaderBoxDown.setUniformf("halfpixel", blurRadius / fboBlurHalf.width, blurRadius / fboBlurHalf.height)
|
||||
blurWriteQuad2.render(shaderBoxDown, GL20.GL_TRIANGLES)
|
||||
}
|
||||
|
||||
fboBlur.inAction(camera, batch) {
|
||||
blurtex3 = fboBlurHalf.colorBufferTexture
|
||||
blurtex3.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
|
||||
blurtex3.bind(0)
|
||||
shaderBoxUp.bind()
|
||||
shaderBoxUp.setUniformMatrix("u_projTrans", camera.combined)
|
||||
shaderBoxUp.setUniformi("u_texture", 0)
|
||||
shaderBoxUp.setUniformf("halfpixel", blurRadius / fboBlurHalf.width, blurRadius / fboBlurHalf.height)
|
||||
blurWriteQuad.render(shaderBoxUp, GL20.GL_TRIANGLES)
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ abstract class UICanvas(
|
||||
*
|
||||
* Timer itself is implemented in the ui.handler.
|
||||
*/
|
||||
abstract var openCloseTime: Second
|
||||
open var openCloseTime: Second = OPENCLOSE_GENERIC
|
||||
|
||||
|
||||
protected val uiItems = ArrayList<UIItem>()
|
||||
@@ -117,8 +117,8 @@ abstract class UICanvas(
|
||||
handler.update(this, delta)
|
||||
}
|
||||
/** Called by the screen */
|
||||
fun render(batch: SpriteBatch, camera: Camera) {
|
||||
handler.render(this, batch, camera)
|
||||
fun render(batch: SpriteBatch, camera: Camera, parentOpacity: Float = 1f) {
|
||||
handler.render(this, batch, camera, parentOpacity)
|
||||
}
|
||||
|
||||
|
||||
@@ -152,22 +152,30 @@ abstract class UICanvas(
|
||||
/**
|
||||
* Do not modify ui.handler.openCloseCounter here.
|
||||
*/
|
||||
abstract fun doOpening(delta: Float)
|
||||
open fun doOpening(delta: Float) {
|
||||
handler.opacity = handler.openCloseCounter / openCloseTime
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not modify ui.handler.openCloseCounter here.
|
||||
*/
|
||||
abstract fun doClosing(delta: Float)
|
||||
open fun doClosing(delta: Float) {
|
||||
handler.opacity = (openCloseTime - handler.openCloseCounter) / openCloseTime
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not modify ui.handler.openCloseCounter here.
|
||||
*/
|
||||
abstract fun endOpening(delta: Float)
|
||||
open fun endOpening(delta: Float) {
|
||||
handler.opacity = 1f
|
||||
}
|
||||
|
||||
/**
|
||||
* Do not modify ui.handler.openCloseCounter here.
|
||||
*/
|
||||
abstract fun endClosing(delta: Float)
|
||||
open fun endClosing(delta: Float) {
|
||||
handler.opacity = 0f
|
||||
}
|
||||
|
||||
abstract override fun dispose()
|
||||
|
||||
@@ -328,7 +336,7 @@ abstract class UICanvas(
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val OPENCLOSE_GENERIC = 0.2f
|
||||
const val OPENCLOSE_GENERIC = 0.0666f
|
||||
|
||||
fun doOpeningFade(ui: UICanvas, openCloseTime: Second) {
|
||||
ui.handler.opacity = maxOf(0f, ui.handler.openCloseCounter - 0.02f) / openCloseTime // fade start 1/50 sec late, it's intended
|
||||
|
||||
@@ -271,7 +271,7 @@ void main() {
|
||||
subUIs.forEach { it.update(delta) }
|
||||
}
|
||||
|
||||
fun render(ui: UICanvas, batch: SpriteBatch, camera: Camera) {
|
||||
fun render(ui: UICanvas, batch: SpriteBatch, camera: Camera, parentOpacity: Float) {
|
||||
|
||||
if (isVisible) {
|
||||
// camera SHOULD BE CENTERED to HALFX and HALFY (see StateInGame) //
|
||||
@@ -290,7 +290,7 @@ void main() {
|
||||
batch.color = Color.WHITE
|
||||
|
||||
batch.shader = shader
|
||||
shader.setUniformf("opacity", opacity)
|
||||
shader.setUniformf("opacity", opacity * parentOpacity)
|
||||
ui.renderUI(batch, camera)
|
||||
//ingameGraphics.flush()
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ class UIItemHorizontalFadeSlide(
|
||||
//transitionLength: Float,
|
||||
currentPosition: Float,
|
||||
vararg uis: UICanvas
|
||||
) : UIItemTransitionContainer(parent, initialX, initialY, width, height, 0.15f, currentPosition, uis) {
|
||||
) : UIItemTransitionContainer(parent, initialX, initialY, width, height, 0.10f, currentPosition, uis) {
|
||||
|
||||
fun getOffX(index: Int) = ((currentPosition - index) * width / 2f).roundToInt()
|
||||
fun getOpacity(index: Int) = 1f - (currentPosition - index).absoluteValue.coerceIn(0f, 1f)
|
||||
|
||||
@@ -5,9 +5,10 @@ import com.badlogic.gdx.graphics.Camera
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import net.torvald.terrarum.App
|
||||
import net.torvald.terrarum.App.printdbg
|
||||
|
||||
open class UIItemTransitionContainer(
|
||||
parent: UICanvas,
|
||||
private val parent: UICanvas,
|
||||
initialX: Int,
|
||||
initialY: Int,
|
||||
override val width: Int,
|
||||
@@ -77,7 +78,7 @@ open class UIItemTransitionContainer(
|
||||
uis.forEachIndexed { index, ui ->
|
||||
if (currentPosition > index - 1 + epsilon && currentPosition < index + 1 - epsilon) {
|
||||
if (!ui.isOpened && !ui.isOpening) ui.setAsOpen()
|
||||
ui.render(batch, camera)
|
||||
ui.render(batch, camera, parent.opacity)
|
||||
|
||||
if (debugvals) {
|
||||
App.fontSmallNumbers.draw(batch, "$index", 300f + (20 * index), 10f)
|
||||
|
||||
Reference in New Issue
Block a user