resolving issue #12

Former-commit-id: eee32f1d3b74a431626888ab32166e0cad14f522
Former-commit-id: e58fecf50f193d695f7a7852117183486a12cc62
This commit is contained in:
Song Minjae
2017-02-14 23:25:18 +09:00
parent 5d7349386e
commit 1c0b969078
2 changed files with 54 additions and 101 deletions

View File

@@ -1028,14 +1028,18 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
if (isVisible && spriteGlow != null) { if (isVisible && spriteGlow != null) {
blendLightenOnly() blendLightenOnly()
if (!sprite!!.flippedHorizontal()) { val offsetX = if (!spriteGlow!!.flippedHorizontal())
val offsetX = hitboxTranslateX * scale hitboxTranslateX * scale
else
spriteGlow!!.cellWidth * scale - (hitbox.width + hitboxTranslateX * scale)
val offsetY = spriteGlow!!.cellHeight * scale - hitbox.height - hitboxTranslateY * scale - 2
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 - offsetX).toFloat() + world.width * TILE_SIZE, (hitbox.posX - offsetX).toFloat() + world.width * TILE_SIZE,
(hitbox.posY + hitboxTranslateY * scale).toFloat(), (hitbox.posY - offsetY).toFloat(),
(scale).toFloat() (scale).toFloat()
) )
} }
@@ -1043,47 +1047,19 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
// camera center pos, actor center neg // camera center pos, actor center neg
spriteGlow!!.render(g, spriteGlow!!.render(g,
(hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE, (hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE,
(hitbox.posY + hitboxTranslateY * scale).toFloat(), (hitbox.posY - offsetY).toFloat(),
(scale).toFloat()
)
}
else {
sprite!!.render(g,
(hitbox.posX - offsetX).toFloat(),
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
(scale).toFloat()
)
}
}
else {
val offsetX = spriteGlow!!.cellWidth - (hitbox.width + hitboxTranslateX * scale)
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
// camera center neg, actor center pos
spriteGlow!!.render(g,
(hitbox.posX - offsetX).toFloat() + world.width * TILE_SIZE,
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
(scale).toFloat()
)
}
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
// camera center pos, actor center neg
spriteGlow!!.render(g,
(hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE,
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
(scale).toFloat() (scale).toFloat()
) )
} }
else { else {
spriteGlow!!.render(g, spriteGlow!!.render(g,
(hitbox.posX - offsetX).toFloat(), (hitbox.posX - offsetX).toFloat(),
(hitbox.posY + hitboxTranslateY * scale).toFloat(), (hitbox.posY - offsetY).toFloat(),
(scale).toFloat() (scale).toFloat()
) )
} }
} }
} }
}
val leftsidePadding = world.width.times(TILE_SIZE) - MapCamera.width.ushr(1) val leftsidePadding = world.width.times(TILE_SIZE) - MapCamera.width.ushr(1)
val rightsidePadding = MapCamera.width.ushr(1) val rightsidePadding = MapCamera.width.ushr(1)
@@ -1097,14 +1073,18 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
BLEND_SCREEN -> blendScreen() BLEND_SCREEN -> blendScreen()
} }
if (!sprite!!.flippedHorizontal()) { val offsetX = if (!sprite!!.flippedHorizontal())
val offsetX = hitboxTranslateX * scale hitboxTranslateX * scale
else
sprite!!.cellWidth * scale - (hitbox.width + hitboxTranslateX * scale)
val offsetY = sprite!!.cellHeight * scale - hitbox.height - hitboxTranslateY * scale - 2
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 - offsetX).toFloat() + world.width * TILE_SIZE, (hitbox.posX - offsetX).toFloat() + world.width * TILE_SIZE,
(hitbox.posY + hitboxTranslateY * scale).toFloat(), (hitbox.posY - offsetY).toFloat(),
(scale).toFloat() (scale).toFloat()
) )
} }
@@ -1112,45 +1092,18 @@ open class ActorWithSprite(renderOrder: ActorOrder, val immobileBody: Boolean =
// camera center pos, actor center neg // camera center pos, actor center neg
sprite!!.render(g, sprite!!.render(g,
(hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE, (hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE,
(hitbox.posY + hitboxTranslateY * scale).toFloat(), (hitbox.posY - offsetY).toFloat(),
(scale).toFloat() (scale).toFloat()
) )
} }
else { else {
sprite!!.render(g, sprite!!.render(g,
(hitbox.posX - offsetX).toFloat(), (hitbox.posX - offsetX).toFloat(),
(hitbox.posY + hitboxTranslateY * scale).toFloat(), (hitbox.posY - offsetY).toFloat(),
(scale).toFloat() (scale).toFloat()
) )
} }
}
else {
val offsetX = sprite!!.cellWidth - (hitbox.width + hitboxTranslateX * scale)
if (MapCamera.xCentre > leftsidePadding && centrePosPoint.x <= rightsidePadding) {
// camera center neg, actor center pos
sprite!!.render(g,
(hitbox.posX - offsetX).toFloat() + world.width * TILE_SIZE,
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
(scale).toFloat()
)
}
else if (MapCamera.xCentre < rightsidePadding && centrePosPoint.x >= leftsidePadding) {
// camera center pos, actor center neg
sprite!!.render(g,
(hitbox.posX - offsetX).toFloat() - world.width * TILE_SIZE,
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
(scale).toFloat()
)
}
else {
sprite!!.render(g,
(hitbox.posX - offsetX).toFloat(),
(hitbox.posY + hitboxTranslateY * scale).toFloat(),
(scale).toFloat()
)
}
}
} }
} }

View File

@@ -64,7 +64,7 @@ object PlayerBuilderSigrid {
//p.actorValue["__selectedtile"] = 147 // test code; replace with <tile_item>.primaryUse(gc, delta) //p.actorValue["__selectedtile"] = 147 // test code; replace with <tile_item>.primaryUse(gc, delta)
p.actorValue["__aimhelper"] = true // TODO when you'll gonna implement it? p.actorValue["__aimhelper"] = true // TODO when you'll gonna implement it?
p.setHitboxDimension(15, p.actorValue.getAsInt(AVKey.BASEHEIGHT)!!, 11, -2) // FIXME offsetY of -2: Have no idea about the error; it's just supposed to be zero p.setHitboxDimension(15, p.actorValue.getAsInt(AVKey.BASEHEIGHT)!!, 11, 0) // FIXME offsetY of -2: Have no idea about the error; it's just supposed to be zero
p.inventory = ActorInventory(0x7FFFFFFF, true) p.inventory = ActorInventory(0x7FFFFFFF, true)