mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-17 09:06:06 +09:00
actor draw issue fixed for real this time
Former-commit-id: 16d315a8df6477748bdb78b567ee1c97ffc2f455 Former-commit-id: 96c8efc59b69c78ae7c861ebd371fc315d3be058
This commit is contained in:
@@ -20,7 +20,6 @@ import org.newdawn.slick.GameContainer
|
|||||||
import org.newdawn.slick.Graphics
|
import org.newdawn.slick.Graphics
|
||||||
import org.newdawn.slick.Image
|
import org.newdawn.slick.Image
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.reflect.jvm.internal.impl.resolve.constants.DoubleValue
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base class for every actor that has animated sprites. This includes furnishings, paintings, gadgets, etc.
|
* Base class for every actor that has animated sprites. This includes furnishings, paintings, gadgets, etc.
|
||||||
@@ -1012,46 +1011,61 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
|
|||||||
if (isVisible && spriteGlow != null) {
|
if (isVisible && spriteGlow != null) {
|
||||||
blendLightenOnly()
|
blendLightenOnly()
|
||||||
|
|
||||||
if (!sprite!!.flippedHorizontal()) {
|
if (!spriteGlow!!.flippedHorizontal()) {
|
||||||
spriteGlow!!.render(g,
|
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
|
||||||
(hitbox.posX - hitboxTranslateX * scale).toFloat(),
|
// camera center neg, actor center pos
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
spriteGlow!!.render(g,
|
||||||
(scale).toFloat()
|
(hitbox.posX - hitboxTranslateX * scale).toFloat() + world.width * TILE_SIZE,
|
||||||
)
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
// Q&D fix for Roundworld anomaly
|
(scale).toFloat()
|
||||||
spriteGlow!!.render(g,
|
)
|
||||||
(hitbox.posX - hitboxTranslateX * scale).toFloat() + world.width * TILE_SIZE,
|
}
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
|
||||||
(scale).toFloat()
|
// camera center pos, actor center neg
|
||||||
)
|
spriteGlow!!.render(g,
|
||||||
spriteGlow!!.render(g,
|
(hitbox.posX - hitboxTranslateX * scale).toFloat() - world.width * TILE_SIZE,
|
||||||
(hitbox.posX - hitboxTranslateX * scale).toFloat() - world.width * TILE_SIZE,
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(scale).toFloat()
|
||||||
(scale).toFloat()
|
)
|
||||||
)
|
}
|
||||||
|
else {
|
||||||
|
spriteGlow!!.render(g,
|
||||||
|
(hitbox.posX - hitboxTranslateX * scale).toFloat(),
|
||||||
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
|
(scale).toFloat()
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
spriteGlow!!.render(g,
|
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
|
||||||
(hitbox.posX - scale).toFloat(),
|
// camera center neg, actor center pos
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
spriteGlow!!.render(g,
|
||||||
(scale).toFloat()
|
(hitbox.posX - scale).toFloat() + world.width * TILE_SIZE,
|
||||||
)
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
// Q&D fix for Roundworld anomaly
|
(scale).toFloat()
|
||||||
spriteGlow!!.render(g,
|
)
|
||||||
(hitbox.posX - scale).toFloat() + world.width * TILE_SIZE,
|
}
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
|
||||||
(scale).toFloat()
|
// camera center pos, actor center neg
|
||||||
)
|
spriteGlow!!.render(g,
|
||||||
spriteGlow!!.render(g,
|
(hitbox.posX - scale).toFloat() - world.width * TILE_SIZE,
|
||||||
(hitbox.posX - scale).toFloat() - world.width * TILE_SIZE,
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
(scale).toFloat()
|
||||||
(scale).toFloat()
|
)
|
||||||
)
|
}
|
||||||
|
else {
|
||||||
|
spriteGlow!!.render(g,
|
||||||
|
(hitbox.posX - scale).toFloat(),
|
||||||
|
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
|
||||||
|
(scale).toFloat()
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val halfWorldW = world.width.times(TILE_SIZE).ushr(1)
|
val leftsidePadding = world.width.times(TILE_SIZE) - MapCamera.width.ushr(1)
|
||||||
|
val rightsidePadding = MapCamera.width.ushr(1)
|
||||||
|
|
||||||
override fun drawBody(g: Graphics) {
|
override fun drawBody(g: Graphics) {
|
||||||
if (isVisible && sprite != null) {
|
if (isVisible && sprite != null) {
|
||||||
@@ -1063,7 +1077,7 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!sprite!!.flippedHorizontal()) {
|
if (!sprite!!.flippedHorizontal()) {
|
||||||
if (MapCamera.xCentre > halfWorldW && centrePosPoint.x < halfWorldW) {
|
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 - hitboxTranslateX * scale).toFloat() + world.width * TILE_SIZE,
|
||||||
@@ -1071,7 +1085,7 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
|
|||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else if (MapCamera.xCentre < halfWorldW && centrePosPoint.x >= halfWorldW) {
|
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 - hitboxTranslateX * scale).toFloat() - world.width * TILE_SIZE,
|
||||||
@@ -1088,7 +1102,7 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (MapCamera.xCentre > halfWorldW && centrePosPoint.x < halfWorldW) {
|
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 - scale).toFloat() + world.width * TILE_SIZE,
|
||||||
@@ -1096,7 +1110,7 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
|
|||||||
(scale).toFloat()
|
(scale).toFloat()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
else if (MapCamera.xCentre < halfWorldW && centrePosPoint.x >= halfWorldW) {
|
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 - scale).toFloat() - world.width * TILE_SIZE,
|
||||||
|
|||||||
Reference in New Issue
Block a user