mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
fix: fluid not renaming on load
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user