fix: fluid not renaming on load

This commit is contained in:
minjaesong
2024-08-20 15:37:34 +09:00
parent e12a049e70
commit 186733e4f8
2 changed files with 23 additions and 11 deletions

View File

@@ -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<Long, ItemID> = 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)
}
}

View File

@@ -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")