From 764945fc30f6f16972858b4c28797c865e2f5a87 Mon Sep 17 00:00:00 2001 From: Minjae Song Date: Wed, 19 Dec 2018 22:23:50 +0900 Subject: [PATCH] prep for fluid exclusive render --- assets/mods/basegame/blocks/fluids.tga.gz | 3 +++ .../terrarum/worlddrawer/BlocksDrawerNew.kt | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 assets/mods/basegame/blocks/fluids.tga.gz diff --git a/assets/mods/basegame/blocks/fluids.tga.gz b/assets/mods/basegame/blocks/fluids.tga.gz new file mode 100644 index 000000000..c121da6fd --- /dev/null +++ b/assets/mods/basegame/blocks/fluids.tga.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d92f09b9f02115fc00e653c3a6f7bff1f45499d07411ebbedf4aacd0860df84 +size 43820 diff --git a/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt b/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt index f3b940462..508c9fba6 100644 --- a/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt +++ b/src/net/torvald/terrarum/worlddrawer/BlocksDrawerNew.kt @@ -46,6 +46,7 @@ internal object BlocksDrawer { val tilesWire: TextureRegionPack val tileItemWall: TextureRegionPack val tilesTerrainBlend: TextureRegionPack + val tilesFluid: TextureRegionPack //val tileItemWall = Image(TILE_SIZE * 16, TILE_SIZE * GameWorld.TILES_SUPPORTED / 16) // 4 MB @@ -57,6 +58,7 @@ internal object BlocksDrawer { val WALL = GameWorld.WALL val TERRAIN = GameWorld.TERRAIN val WIRE = GameWorld.WIRE + val FLUID = -2 private const val NEARBY_TILE_KEY_UP = 0 private const val NEARBY_TILE_KEY_RIGHT = 1 @@ -75,6 +77,7 @@ internal object BlocksDrawer { private lateinit var terrainTilesBuffer: Array private lateinit var wallTilesBuffer: Array private lateinit var wireTilesBuffer: Array + private lateinit var fluidTilesBuffer: Array private var tilesBuffer: Pixmap = Pixmap(1, 1, Pixmap.Format.RGBA8888) @@ -89,8 +92,8 @@ internal object BlocksDrawer { // -- Torvald, 2018-12-19 // hard-coded as tga.gz - val gzFileList = listOf("blocks/terrain.tga.gz", "blocks/wire.tga.gz", "blocks/terrain_autumn.tga.gz") - val gzTmpFName = listOf("tmp_terrain.tga", "tmp_wire.tga", "tmp_terrain_autumn.tga") + val gzFileList = listOf("blocks/terrain.tga.gz", "blocks/wire.tga.gz", "blocks/terrain_autumn.tga.gz", "blocks/fluids.tga.gz") + val gzTmpFName = listOf("tmp_terrain.tga", "tmp_wire.tga", "tmp_terrain_autumn.tga", "tmp_fluids.tga") // unzip GZIP temporarily gzFileList.forEachIndexed { index, filename -> val terrainTexFile = ModMgr.getGdxFile("basegame", filename) @@ -106,6 +109,7 @@ internal object BlocksDrawer { val _terrainPixMap = Pixmap(Gdx.files.internal(gzTmpFName[0])) val _wirePixMap = Pixmap(Gdx.files.internal(gzTmpFName[1])) val _terrainBlendPixMap = Pixmap(Gdx.files.internal(gzTmpFName[2])) + val _fluidPixMap = Pixmap(Gdx.files.internal(gzTmpFName[3])) // delete temp files gzTmpFName.forEach { File(it).delete() } @@ -116,11 +120,14 @@ internal object BlocksDrawer { tilesWire.texture.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest) tilesTerrainBlend = TextureRegionPack(Texture(_terrainBlendPixMap), TILE_SIZE, TILE_SIZE) tilesTerrainBlend.texture.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest) + tilesFluid = TextureRegionPack(Texture(_fluidPixMap), TILE_SIZE, TILE_SIZE) + tilesFluid.texture.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest) // also dispose unused temp files //terrainPixMap.dispose() // commented: tileItemWall needs it _wirePixMap.dispose() _terrainBlendPixMap.dispose() + _fluidPixMap.dispose() @@ -719,6 +726,7 @@ internal object BlocksDrawer { TERRAIN -> terrainTilesBuffer WALL -> wallTilesBuffer WIRE -> wireTilesBuffer + FLUID -> fluidTilesBuffer else -> throw IllegalArgumentException() } @@ -740,16 +748,18 @@ internal object BlocksDrawer { val tileAtlas = when (mode) { TERRAIN, WALL -> tilesTerrain WIRE -> tilesWire + FLUID -> tilesFluid else -> throw IllegalArgumentException() } val sourceBuffer = when(mode) { TERRAIN -> terrainTilesBuffer WALL -> wallTilesBuffer WIRE -> wireTilesBuffer + FLUID -> fluidTilesBuffer else -> throw IllegalArgumentException() } val vertexColour = when (mode) { - TERRAIN, WIRE -> Color.WHITE + TERRAIN, WIRE, FLUID -> Color.WHITE WALL -> wallOverlayColour else -> throw IllegalArgumentException() } @@ -819,6 +829,7 @@ internal object BlocksDrawer { terrainTilesBuffer = Array(tilesInVertical, { kotlin.IntArray(tilesInHorizontal) }) wallTilesBuffer = Array(tilesInVertical, { kotlin.IntArray(tilesInHorizontal) }) wireTilesBuffer = Array(tilesInVertical, { kotlin.IntArray(tilesInHorizontal) }) + fluidTilesBuffer = Array(tilesInVertical, { kotlin.IntArray(tilesInHorizontal) }) tilesBuffer.dispose() tilesBuffer = Pixmap(tilesInHorizontal, tilesInVertical, Pixmap.Format.RGBA8888)