mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-11 19:14:05 +09:00
ActorWithSprite: correct offsetting on X axis
Former-commit-id: 7c981241889cff139b3523d751e85885af04f867 Former-commit-id: 33b93c99c94813afa2a7ce272f59e7b28faf9da1
This commit is contained in:
@@ -1028,11 +1028,13 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
|
|||||||
if (isVisible && spriteGlow != null) {
|
if (isVisible && spriteGlow != null) {
|
||||||
blendLightenOnly()
|
blendLightenOnly()
|
||||||
|
|
||||||
if (!spriteGlow!!.flippedHorizontal()) {
|
if (!sprite!!.flippedHorizontal()) {
|
||||||
|
val offsetX = hitboxTranslateX * scale
|
||||||
|
|
||||||
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
|
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
|
||||||
// camera center neg, actor center pos
|
// camera center neg, actor center pos
|
||||||
spriteGlow!!.render(g,
|
spriteGlow!!.render(g,
|
||||||
(hitbox.posX - hitboxTranslateX * scale).toFloat() + world.width * TILE_SIZE,
|
(hitbox.posX - offsetX).toFloat() + world.width * TILE_SIZE,
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
@@ -1040,24 +1042,26 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
|
|||||||
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
|
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
|
||||||
// camera center pos, actor center neg
|
// camera center pos, actor center neg
|
||||||
spriteGlow!!.render(g,
|
spriteGlow!!.render(g,
|
||||||
(hitbox.posX - hitboxTranslateX * scale).toFloat() - world.width * TILE_SIZE,
|
(hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE,
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
spriteGlow!!.render(g,
|
sprite!!.render(g,
|
||||||
(hitbox.posX - hitboxTranslateX * scale).toFloat(),
|
(hitbox.posX - offsetX).toFloat(),
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
val offsetX = spriteGlow!!.cellWidth - (hitbox.width + hitboxTranslateX * scale)
|
||||||
|
|
||||||
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
|
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
|
||||||
// camera center neg, actor center pos
|
// camera center neg, actor center pos
|
||||||
spriteGlow!!.render(g,
|
spriteGlow!!.render(g,
|
||||||
(hitbox.posX - scale).toFloat() + world.width * TILE_SIZE,
|
(hitbox.posX - offsetX).toFloat() + world.width * TILE_SIZE,
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
@@ -1065,14 +1069,14 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
|
|||||||
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
|
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
|
||||||
// camera center pos, actor center neg
|
// camera center pos, actor center neg
|
||||||
spriteGlow!!.render(g,
|
spriteGlow!!.render(g,
|
||||||
(hitbox.posX - scale).toFloat() - world.width * TILE_SIZE,
|
(hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE,
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
spriteGlow!!.render(g,
|
spriteGlow!!.render(g,
|
||||||
(hitbox.posX - scale).toFloat(),
|
(hitbox.posX - offsetX).toFloat(),
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
@@ -1094,10 +1098,12 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!sprite!!.flippedHorizontal()) {
|
if (!sprite!!.flippedHorizontal()) {
|
||||||
|
val offsetX = hitboxTranslateX * scale
|
||||||
|
|
||||||
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
|
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
|
||||||
// camera center neg, actor center pos
|
// camera center neg, actor center pos
|
||||||
sprite!!.render(g,
|
sprite!!.render(g,
|
||||||
(hitbox.posX - hitboxTranslateX * scale).toFloat() + world.width * TILE_SIZE,
|
(hitbox.posX - offsetX).toFloat() + world.width * TILE_SIZE,
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
@@ -1105,24 +1111,26 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
|
|||||||
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
|
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
|
||||||
// camera center pos, actor center neg
|
// camera center pos, actor center neg
|
||||||
sprite!!.render(g,
|
sprite!!.render(g,
|
||||||
(hitbox.posX - hitboxTranslateX * scale).toFloat() - world.width * TILE_SIZE,
|
(hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE,
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sprite!!.render(g,
|
sprite!!.render(g,
|
||||||
(hitbox.posX - hitboxTranslateX * scale).toFloat(),
|
(hitbox.posX - offsetX).toFloat(),
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
val offsetX = sprite!!.cellWidth - (hitbox.width + hitboxTranslateX * scale)
|
||||||
|
|
||||||
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
|
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
|
||||||
// camera center neg, actor center pos
|
// camera center neg, actor center pos
|
||||||
sprite!!.render(g,
|
sprite!!.render(g,
|
||||||
(hitbox.posX - scale).toFloat() + world.width * TILE_SIZE,
|
(hitbox.posX - offsetX).toFloat() + world.width * TILE_SIZE,
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
@@ -1130,14 +1138,14 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
|
|||||||
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
|
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
|
||||||
// camera center pos, actor center neg
|
// camera center pos, actor center neg
|
||||||
sprite!!.render(g,
|
sprite!!.render(g,
|
||||||
(hitbox.posX - scale).toFloat() - world.width * TILE_SIZE,
|
(hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE,
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sprite!!.render(g,
|
sprite!!.render(g,
|
||||||
(hitbox.posX - scale).toFloat(),
|
(hitbox.posX - offsetX).toFloat(),
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user