diff --git a/src/net/torvald/terrarum/gameworld/GameWorld.kt b/src/net/torvald/terrarum/gameworld/GameWorld.kt index dc4100747..921ee501b 100644 --- a/src/net/torvald/terrarum/gameworld/GameWorld.kt +++ b/src/net/torvald/terrarum/gameworld/GameWorld.kt @@ -12,7 +12,6 @@ import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.gameitems.isFluid import net.torvald.terrarum.itemproperties.ItemRemapTable import net.torvald.terrarum.itemproperties.ItemTable -import net.torvald.terrarum.modulebasegame.WorldSimulator import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer import net.torvald.terrarum.realestate.LandUtil import net.torvald.terrarum.realestate.LandUtil.CHUNK_H @@ -272,10 +271,16 @@ open class GameWorld( // before the renaming, update the name maps val oldTileNumberToNameMap: Map = tileNumberToNameMap.toMap() + tileNumberToNameMap.forEach { l, s -> + printdbg(this, " afterload oldMapping tileNumber $l <-> $s") + } + + printdbg(this, "") + tileNumberToNameMap.clear() tileNameToNumberMap.clear() App.tileMaker.tags.forEach { - printdbg(this, "afterload tileNumber ${it.value.tileNumber} <-> tileName ${it.key}") + printdbg(this, " afterload tileMaker tileNumber ${it.value.tileNumber} <-> ${it.key}") tileNumberToNameMap[it.value.tileNumber.toLong()] = it.key tileNameToNumberMap[it.key] = it.value.tileNumber @@ -299,12 +304,19 @@ open class GameWorld( // perform renaming of tile layers for (y in 0 until layerTerrain.height) { for (x in 0 until layerTerrain.width) { + // renumber terrain and wall layerTerrain.unsafeSetTile(x, y, tileNameToNumberMap[oldTileNumberToNameMap[layerTerrain.unsafeGetTile(x, y).toLong()]]!!) layerWall.unsafeSetTile(x, y, tileNameToNumberMap[oldTileNumberToNameMap[layerWall.unsafeGetTile(x, y).toLong()]]!!) - val oldNum = layerOres.unsafeGetTile(x, y).toLong() - val oldName = oldTileNumberToNameMap[oldNum] - layerOres.unsafeSetTileKeepPlacement(x, y, oldName.let { tileNameToNumberMap[it] ?: throw NullPointerException("Unknown tile name: $oldName (<- $oldNum)") }) + // renumber ores + val oldOreNum = layerOres.unsafeGetTile(x, y).toLong() + val oldOreName = oldTileNumberToNameMap[oldOreNum] + layerOres.unsafeSetTileKeepPlacement(x, y, oldOreName.let { tileNameToNumberMap[it] ?: throw NullPointerException("Unknown tile name: $oldOreName (<- $oldOreNum)") }) + + // renumber fluids + val (oldFluidNum, oldFluidFill) = layerFluids.unsafeGetTile1(x, y) + val oldFluidName = oldTileNumberToNameMap[oldFluidNum.toLong()] + layerFluids.unsafeSetTile(x, y, oldFluidName.let { tileNameToNumberMap[it] ?: throw NullPointerException("Unknown tile name: $oldFluidName (<- $oldFluidNum)") }, oldFluidFill) } } diff --git a/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt b/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt index d7766bac1..85faa6640 100644 --- a/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt +++ b/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt @@ -243,7 +243,7 @@ class CreateTileAtlas { } // test print -// PixmapIO2.writeTGA(Gdx.files.absolute("${App.defaultDir}/atlas.tga"), atlas, false) + PixmapIO2.writeTGA(Gdx.files.absolute("${App.defaultDir}/atlas.tga"), atlas, false) // PixmapIO2.writeTGA(Gdx.files.absolute("${AppLoader.defaultDir}/atlasGlow.tga"), atlasGlow, false) @@ -397,13 +397,13 @@ class CreateTileAtlas { } // predefined by the image dimension: 256x256 else if (tilesPixmap.width == TILE_SIZE * 16 && tilesPixmap.height == TILE_SIZE * 16) { - addTag(blockID, RenderTag.CONNECT_SELF, RenderTag.MASK_FLUID) - drawToAtlantes(tilesPixmap, tilesGlowPixmap, tilesEmissivePixmap, RenderTag.MASK_FLUID) + addTag(blockID, RenderTag.CONNECT_SELF, RenderTag.MASK_16X16) + drawToAtlantes(tilesPixmap, tilesGlowPixmap, tilesEmissivePixmap, RenderTag.MASK_16X16) } // predefined by the image dimension: 288x16 else if (tilesPixmap.width == TILE_SIZE * 18 && tilesPixmap.height == TILE_SIZE * 3) { - addTag(blockID, RenderTag.CONNECT_SELF, RenderTag.MASK_16X16) - drawToAtlantes(tilesPixmap, tilesGlowPixmap, tilesEmissivePixmap, RenderTag.MASK_16X16) + addTag(blockID, RenderTag.CONNECT_SELF, RenderTag.MASK_FLUID) + drawToAtlantes(tilesPixmap, tilesGlowPixmap, tilesEmissivePixmap, RenderTag.MASK_FLUID) } // subtitle generic else if (tilesPixmap.width == W_SUBTILE_GENERIC && tilesPixmap.height == H_SUBTILE || @@ -642,7 +642,7 @@ class CreateTileAtlas { MASK_16X4 -> 64 MASK_16X8 -> 128 MASK_16X16 -> 256 - MASK_FLUID -> 18 + MASK_FLUID -> 18*3 MASK_SUBTILE_GENERIC, MASK_SUBTILE_BRICK_TILING -> 52 MASK_SUBTILE_GRASS, MASK_SUBTILE_GRASS_BRICK_TILING -> 84 else -> throw IllegalArgumentException("Unknown maskType: $maskType")