diff --git a/src/net/torvald/terrarum/serialise/WriteSavegame.kt b/src/net/torvald/terrarum/serialise/WriteSavegame.kt index 1e6b20b1a..fdb9cfefc 100644 --- a/src/net/torvald/terrarum/serialise/WriteSavegame.kt +++ b/src/net/torvald/terrarum/serialise/WriteSavegame.kt @@ -53,11 +53,11 @@ object WriteSavegame { val w = 960 val h = 640 - val cx = (1 - WorldCamera.x % 2) - val cy = (1 - WorldCamera.y % 2) + val cx = /*1-*/(WorldCamera.x % 2) + val cy = /*1-*/(WorldCamera.y % 2) - val x = (fb.width - w) - cx // force the even-numbered position - val y = (fb.height - h) - cy // force the even-numbered position + val x = (fb.width - w) / 2 - cx // force the even-numbered position + val y = (fb.height - h) / 2 - cy // force the even-numbered position val p = Pixmap.createFromFrameBuffer(x, y, w, h) IngameRenderer.fboRGBexport = p diff --git a/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt b/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt index a4a75320b..073c2cd20 100644 --- a/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt +++ b/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt @@ -178,7 +178,7 @@ object LightmapRenderer { //println("$for_x_start..$for_x_end, $for_x\t$for_y_start..$for_y_end, $for_y") App.measureDebugTime("Renderer.Lanterns") { - buildLanternmap(actorContainer) + buildLanternAndShadowMap(actorContainer) } // usually takes 3000 ns // copy current world's globalLight into this @@ -338,20 +338,21 @@ object LightmapRenderer { } } - private fun buildLanternmap(actorContainer: List) { + private fun buildLanternAndShadowMap(actorContainer: List) { lanternMap.clear() shadowMap.clear() actorContainer.forEach { if (it is Luminous) { val lightBoxCopy = it.lightBoxList.subList(0, it.lightBoxList.size) // make copy to prevent ConcurrentModificationException val shadeBoxCopy = it.shadeBoxList.subList(0, it.shadeBoxList.size) // make copy to prevent ConcurrentModificationException + val scale = it.scale // put lanterns to the area the luminantBox is occupying lightBoxCopy.forEach { (lightBox, colour) -> - val lightBoxX = it.hitbox.startX + (lightBox.startX * it.scale) - val lightBoxY = it.hitbox.startY + (lightBox.startY * it.scale) - val lightBoxW = lightBox.width * it.scale - val lightBoxH = lightBox.height * it.scale + val lightBoxX = it.hitbox.startX + (lightBox.startX * scale) + val lightBoxY = it.hitbox.startY + (lightBox.startY * scale) + val lightBoxW = lightBox.width * scale + val lightBoxH = lightBox.height * scale for (y in lightBoxY.div(TILE_SIZE).floorInt() ..lightBoxY.plus(lightBoxH).div(TILE_SIZE).floorInt()) { for (x in lightBoxX.div(TILE_SIZE).floorInt() @@ -367,10 +368,10 @@ object LightmapRenderer { // put shades to the area the luminantBox is occupying shadeBoxCopy.forEach { (shadeBox, colour) -> - val lightBoxX = it.hitbox.startX + (shadeBox.startX * it.scale) - val lightBoxY = it.hitbox.startY + (shadeBox.startY * it.scale) - val lightBoxW = shadeBox.width * it.scale - val lightBoxH = shadeBox.height * it.scale + val lightBoxX = it.hitbox.startX + (shadeBox.startX * scale) + val lightBoxY = it.hitbox.startY + (shadeBox.startY * scale) + val lightBoxW = shadeBox.width * scale + val lightBoxH = shadeBox.height * scale for (y in lightBoxY.div(TILE_SIZE).floorInt() ..lightBoxY.plus(lightBoxH).div(TILE_SIZE).floorInt()) { for (x in lightBoxX.div(TILE_SIZE).floorInt()