From e951a6285ef1df65115e69b76dc46ec2ae39d4c3 Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Mon, 23 Jan 2017 19:04:42 +0900 Subject: [PATCH] replaced quick and dirty fix into proper fix Former-commit-id: ee305ad1bb84716a0bb8c17e9aa873eafb0baa6e Former-commit-id: a9d7e6495bbfdea42b253070f66a0978463a8814 --- .../terrarum/gameactors/ActorWithSprite.kt | 78 +++++++++++-------- 1 file changed, 46 insertions(+), 32 deletions(-) diff --git a/src/net/torvald/terrarum/gameactors/ActorWithSprite.kt b/src/net/torvald/terrarum/gameactors/ActorWithSprite.kt index 02773933e..20b84af9d 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithSprite.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithSprite.kt @@ -1060,40 +1060,54 @@ open class ActorWithSprite(renderOrder: ActorOrder, physics: Boolean = true) : A } if (!sprite!!.flippedHorizontal()) { - sprite!!.render(g, - (hitbox.posX - hitboxTranslateX * scale).toFloat(), - (hitbox.posY + hitboxTranslateY * scale).toFloat(), - (scale).toFloat() - ) - // Q&D fix for Roundworld anomaly - sprite!!.render(g, - (hitbox.posX - hitboxTranslateX * scale).toFloat() + world.width * TILE_SIZE, - (hitbox.posY + hitboxTranslateY * scale).toFloat(), - (scale).toFloat() - ) - sprite!!.render(g, - (hitbox.posX - hitboxTranslateX * scale).toFloat() - world.width * TILE_SIZE, - (hitbox.posY + hitboxTranslateY * scale).toFloat(), - (scale).toFloat() - ) + if (MapCamera.xCentre > halfWorldW && centrePosPoint.x < halfWorldW) { + // camera center neg, actor center pos + sprite!!.render(g, + (hitbox.posX - hitboxTranslateX * scale).toFloat() + world.width * TILE_SIZE, + (hitbox.posY + hitboxTranslateY * scale).toFloat(), + (scale).toFloat() + ) + } + else if (MapCamera.xCentre < halfWorldW && centrePosPoint.x >= halfWorldW) { + // camera center pos, actor center neg + sprite!!.render(g, + (hitbox.posX - hitboxTranslateX * scale).toFloat() - world.width * TILE_SIZE, + (hitbox.posY + hitboxTranslateY * scale).toFloat(), + (scale).toFloat() + ) + } + else { + sprite!!.render(g, + (hitbox.posX - hitboxTranslateX * scale).toFloat(), + (hitbox.posY + hitboxTranslateY * scale).toFloat(), + (scale).toFloat() + ) + } } else { - sprite!!.render(g, - (hitbox.posX - scale).toFloat(), - (hitbox.posY + hitboxTranslateY * scale).toFloat(), - (scale).toFloat() - ) - // Q&D fix for Roundworld anomaly - sprite!!.render(g, - (hitbox.posX - scale).toFloat() + world.width * TILE_SIZE, - (hitbox.posY + hitboxTranslateY * scale).toFloat(), - (scale).toFloat() - ) - sprite!!.render(g, - (hitbox.posX - scale).toFloat() - world.width * TILE_SIZE, - (hitbox.posY + hitboxTranslateY * scale).toFloat(), - (scale).toFloat() - ) + if (MapCamera.xCentre > halfWorldW && centrePosPoint.x < halfWorldW) { + // camera center neg, actor center pos + sprite!!.render(g, + (hitbox.posX - scale).toFloat() + world.width * TILE_SIZE, + (hitbox.posY + hitboxTranslateY * scale).toFloat(), + (scale).toFloat() + ) + } + else if (MapCamera.xCentre < halfWorldW && centrePosPoint.x >= halfWorldW) { + // camera center pos, actor center neg + sprite!!.render(g, + (hitbox.posX - scale).toFloat() - world.width * TILE_SIZE, + (hitbox.posY + hitboxTranslateY * scale).toFloat(), + (scale).toFloat() + ) + } + else { + sprite!!.render(g, + (hitbox.posX - scale).toFloat(), + (hitbox.posY + hitboxTranslateY * scale).toFloat(), + (scale).toFloat() + ) + } } } }