From 463e59087cc93b4ba5f9544c25bed0b09c114c8f Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 20 Feb 2021 15:10:47 +0900 Subject: [PATCH] something's not right with tile numbering --- assets/mods/basegame/blocks/0.tga | 3 +++ assets/mods/basegame/blocks/blocks.csv | 1 - .../torvald/terrarum/blockstats/MinimapComposer.kt | 2 +- src/net/torvald/terrarum/gameworld/GameWorld.kt | 11 ++++++++++- .../torvald/terrarum/worlddrawer/BlocksDrawerNew.kt | 5 +---- .../torvald/terrarum/worlddrawer/CreateTileAtlas.kt | 9 ++++++--- 6 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 assets/mods/basegame/blocks/0.tga diff --git a/assets/mods/basegame/blocks/0.tga b/assets/mods/basegame/blocks/0.tga new file mode 100644 index 000000000..eba0040b7 --- /dev/null +++ b/assets/mods/basegame/blocks/0.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa177db29d3567b79eea0effaa62e087c707b0178da94f95f963c35567624d0b +size 1068 diff --git a/assets/mods/basegame/blocks/blocks.csv b/assets/mods/basegame/blocks/blocks.csv index 78787630c..bb1de1918 100644 --- a/assets/mods/basegame/blocks/blocks.csv +++ b/assets/mods/basegame/blocks/blocks.csv @@ -1,6 +1,5 @@ "id";"drop";"name";"shdr";"shdg";"shdb";"shduv";"str";"dsty";"mate";"solid";"plat";"wall";"grav";"dlfn";"fv";"fr";"lumr";"lumg";"lumb";"lumuv";"colour";"vscs" "0";"0";"BLOCK_AIR";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"0";"0";"1";"N/A";"0";"0";"4";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A" -"1";"1";"BLOCK_MIASMA";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"0";"0";"1";"N/A";"0";"0";"4";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A" "16";"17";"BLOCK_STONE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"0";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A" "17";"17";"BLOCK_STONE_QUARRIED";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"0";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A" "18";"18";"BLOCK_STONE_TILE_WHITE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"0";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A" diff --git a/src/net/torvald/terrarum/blockstats/MinimapComposer.kt b/src/net/torvald/terrarum/blockstats/MinimapComposer.kt index a4f92e568..a344ffdc1 100644 --- a/src/net/torvald/terrarum/blockstats/MinimapComposer.kt +++ b/src/net/torvald/terrarum/blockstats/MinimapComposer.kt @@ -137,7 +137,7 @@ object MinimapComposer : Disposable { val tileTerr = world.getTileFromTerrain(x, y) val wallTerr = world.getTileFromWall(x, y) val colTerr = CreateTileAtlas.terrainTileColourMap.get(tileTerr)!!.toGdxColor() - val colWall = CreateTileAtlas.terrainTileColourMap.get(wallTerr)!!.toGdxColor().mul(BlocksDrawer.wallOverlayColour) + val colWall = CreateTileAtlas.terrainTileColourMap.get(wallTerr)!!.toGdxColor().mul(CreateTileAtlas.wallOverlayColour) val outCol = if (colTerr.a > 0.1f) colTerr else colWall diff --git a/src/net/torvald/terrarum/gameworld/GameWorld.kt b/src/net/torvald/terrarum/gameworld/GameWorld.kt index 75675ddb6..70182a238 100644 --- a/src/net/torvald/terrarum/gameworld/GameWorld.kt +++ b/src/net/torvald/terrarum/gameworld/GameWorld.kt @@ -147,6 +147,8 @@ open class GameWorld : Disposable { tileNumberToNameMap = HashMap() tileNameToNumberMap = HashMap() CreateTileAtlas.tags.forEach { + printdbg(this, "tileNumber ${it.value.tileNumber} <-> tileName ${it.key}") + tileNumberToNameMap[it.value.tileNumber] = it.key tileNameToNumberMap[it.key] = it.value.tileNumber } @@ -224,7 +226,14 @@ open class GameWorld : Disposable { */ fun getTileFromTerrain(rawX: Int, rawY: Int): ItemID { val (x, y) = coerceXY(rawX, rawY) - return tileNumberToNameMap[layerTerrain.unsafeGetTile(x, y)]!! + + try { + return tileNumberToNameMap[layerTerrain.unsafeGetTile(x, y)]!! + } + catch (e: NullPointerException) { + System.err.println("NPE for tilenum ${layerTerrain.unsafeGetTile(x, y)}") + throw e + } } /** diff --git a/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt b/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt index cf9ada9fe..7f7a5ea02 100644 --- a/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt +++ b/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt @@ -55,9 +55,6 @@ internal object BlocksDrawer { //val tileItemWall = Image(TILE_SIZE * 16, TILE_SIZE * GameWorld.TILES_SUPPORTED / 16) // 4 MB - - val wallOverlayColour = Color(5f / 9f, 5f / 9f, 5f / 9f, 1f) - const val BREAKAGE_STEPS = 10 val WALL = GameWorld.WALL @@ -582,7 +579,7 @@ internal object BlocksDrawer { } val vertexColour = when (mode) { TERRAIN, WIRE, FLUID -> Color.WHITE - WALL -> wallOverlayColour + WALL -> CreateTileAtlas.wallOverlayColour else -> throw IllegalArgumentException() } diff --git a/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt b/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt index 144dd070c..a05391737 100644 --- a/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt +++ b/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt @@ -8,6 +8,7 @@ import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.utils.GdxRuntimeException import net.torvald.gdx.graphics.Cvec import net.torvald.terrarum.* +import net.torvald.terrarum.AppLoader.printdbg import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.blockproperties.Fluid @@ -35,6 +36,8 @@ object CreateTileAtlas { private val TOTAL_TILES = TILES_IN_X * TILES_IN_X + val wallOverlayColour = Color(5f / 9f, 5f / 9f, 5f / 9f, 1f) + lateinit var atlas: Pixmap lateinit var atlasAutumn: Pixmap lateinit var atlasWinter: Pixmap @@ -61,7 +64,6 @@ object CreateTileAtlas { // 16 tiles are reserved for internal use: solid black, solid white, breakage stages. // 0th tile is complete transparent tile and is also a BlockID of zero: air. private var atlasCursor = 0 - private var atlasCursorGlow = 0 private val atlasInit = "./assets/graphics/blocks/init.tga" private var itemSheetCursor = 16 @@ -72,7 +74,6 @@ object CreateTileAtlas { tags = HashMap() itemSheetNumbers = HashMap() - tags[Block.AIR] = RenderTag(0, RenderTag.CONNECT_SELF, RenderTag.MASK_NA) atlas = Pixmap(TILES_IN_X * TILE_SIZE, TILES_IN_X * TILE_SIZE, Pixmap.Format.RGBA8888) atlasAutumn = Pixmap(TILES_IN_X * TILE_SIZE, TILES_IN_X * TILE_SIZE, Pixmap.Format.RGBA8888) @@ -160,7 +161,7 @@ object CreateTileAtlas { // darken things for the wall for (y in 0 until itemWallPixmap.height) { for (x in 0 until itemWallPixmap.width) { - val c = Color(itemWallPixmap.getPixel(x, y)).mulAndAssign(BlocksDrawer.wallOverlayColour).toRGBA() + val c = Color(itemWallPixmap.getPixel(x, y)).mulAndAssign(wallOverlayColour).toRGBA() itemWallPixmap.drawPixel(x, y, c) } } @@ -281,6 +282,8 @@ object CreateTileAtlas { } tags[id] = RenderTag(atlasCursor, connectionType, maskType) + + printdbg(this, "tileName ${id} ->> tileNumber ${atlasCursor}") } private fun drawToAtlantes(pixmap: Pixmap, glow: Pixmap, tilesCount: Int) {