From 7d38ba866c5d360168394a2392be4ce17805e1b6 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Fri, 1 Mar 2024 18:14:12 +0900 Subject: [PATCH] fix: zooming would not properly center the cam if streamers mode is on --- .../terrarum/modulebasegame/IngameRenderer.kt | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt index 76a04bec1..32e6ec155 100644 --- a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt +++ b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt @@ -21,7 +21,6 @@ import net.torvald.terrarum.gameactors.ActorWithBody.Companion.METER import net.torvald.terrarum.gameactors.ActorWithBody.Companion.SI_TO_GAME_ACC import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gameitems.GameItem -import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.gameitems.mouseInInteractableRange import net.torvald.terrarum.gameparticles.ParticleBase import net.torvald.terrarum.gameworld.GameWorld @@ -31,7 +30,6 @@ import net.torvald.terrarum.modulebasegame.gameitems.ItemThrowable import net.torvald.terrarum.modulebasegame.gameitems.getThrowPosAndVector import net.torvald.terrarum.ui.Toolkit import net.torvald.terrarum.weather.WeatherMixer -import net.torvald.terrarum.weather.WeatherMixer.render import net.torvald.terrarum.worlddrawer.BlocksDrawer import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarum.worlddrawer.LightmapRenderer @@ -217,6 +215,17 @@ object IngameRenderer : Disposable { private var oldCamX = 0 + private fun FlippingSpriteBatch.drawFramebufferWithZoom(buf: TextureRegion, zoom: Float) { + val t = (if (App.getConfigBoolean("fx_streamerslayout")) App.scr.chatWidth / 2 else 0).toFloat() + + this.draw(buf, + -0.5f * buf.regionWidth * zoom + 0.5f * buf.regionWidth + t * (zoom - 1f), + -0.5f * buf.regionHeight * zoom + 0.5f * buf.regionHeight, + buf.regionWidth * zoom, + buf.regionHeight * zoom + ) + } + operator fun invoke( frameDelta: Float, gamePaused: Boolean, @@ -300,12 +309,7 @@ object IngameRenderer : Disposable { blendNormalStraightAlpha(batch) batch.shader = shaderBlendGlow shaderBlendGlow.setUniformi("tex1", 1) - batch.draw(rgbTex, - -0.5f * rgbTex.regionWidth * zoom + 0.5f * rgbTex.regionWidth, - -0.5f * rgbTex.regionHeight * zoom + 0.5f * rgbTex.regionHeight, - rgbTex.regionWidth * zoom, - rgbTex.regionHeight * zoom - ) + batch.drawFramebufferWithZoom(rgbTex, zoom) } } @@ -317,12 +321,7 @@ object IngameRenderer : Disposable { batch.inUse { blendNormalStraightAlpha(batch) batch.shader = null - batch.draw(rgbTex, - -0.5f * rgbTex.regionWidth * zoom + 0.5f * rgbTex.regionWidth, - -0.5f * rgbTex.regionHeight * zoom + 0.5f * rgbTex.regionHeight, - rgbTex.regionWidth * zoom, - rgbTex.regionHeight * zoom - ) + batch.drawFramebufferWithZoom(rgbTex, zoom) // indicator batch.color = Color.RED @@ -344,12 +343,7 @@ object IngameRenderer : Disposable { batch.inUse { blendNormalStraightAlpha(batch) batch.shader = null - batch.draw(aTex, - -0.5f * aTex.regionWidth * zoom + 0.5f * aTex.regionWidth, - -0.5f * aTex.regionHeight * zoom + 0.5f * aTex.regionHeight, - aTex.regionWidth * zoom, - aTex.regionHeight * zoom - ) + batch.drawFramebufferWithZoom(aTex, zoom) // indicator batch.color = Color.WHITE