replacing water/lava tiles with one fluid marker

actual fluid not implemented
This commit is contained in:
Minjae Song
2018-12-12 20:32:13 +09:00
parent ad8d3ba210
commit 6d553ea583
9 changed files with 56 additions and 57 deletions

View File

@@ -115,39 +115,7 @@ object Block {
val SUNSTONE = 257
val DAYLIGHT_CAPACITOR = 258
val WATER_1 = 4080
val WATER_2 = 4081
val WATER_3 = 4082
val WATER_4 = 4083
val WATER_5 = 4084
val WATER_6 = 4085
val WATER_7 = 4086
val WATER_8 = 4087
val WATER_9 = 4088
val WATER_10 = 4089
val WATER_11 = 4090
val WATER_12 = 4091
val WATER_13 = 4092
val WATER_14 = 4093
val WATER_15 = 4094
val WATER = 4095
val LAVA_1 = 4064
val LAVA_2 = 4065
val LAVA_3 = 4066
val LAVA_4 = 4067
val LAVA_5 = 4068
val LAVA_6 = 4069
val LAVA_7 = 4070
val LAVA_8 = 4071
val LAVA_9 = 4072
val LAVA_10 = 4073
val LAVA_11 = 4074
val LAVA_12 = 4075
val LAVA_13 = 4076
val LAVA_14 = 4077
val LAVA_15 = 4078
val LAVA = 4079
val FLUID_MARKER = 4095
val NULL = -1
}

View File

@@ -2,6 +2,7 @@
package net.torvald.terrarum.gameworld
import com.badlogic.gdx.graphics.Color
import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.realestate.LandUtil
import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.serialise.ReadLayerDataLzma
@@ -336,6 +337,13 @@ open class GameWorld {
fun getWallDamage(x: Int, y: Int): Float =
wallDamages[LandUtil.getBlockAddr(this, x, y)] ?: 0f
fun setFluid(x: Int, y: Int, fluidType: Int, fill: Float) {
val addr = LandUtil.getBlockAddr(this, x, y)
fluidTypes[addr] = fluidType
fluidFills[addr] = fill
setTileTerrain(x, y, Block.FLUID_MARKER)
}
fun getTemperature(worldTileX: Int, worldTileY: Int): Float? {
return null

View File

@@ -47,9 +47,10 @@ abstract class GameItem : Comparable<GameItem>, Cloneable {
var nameColour = Color.WHITE
/** In kg */
abstract var baseMass: Double
/** In kg */
abstract var baseToolSize: Double?
abstract var inventoryCategory: String // "weapon", "tool", "armor", etc. (all smallcaps)

View File

@@ -169,6 +169,30 @@ object ItemCodex {
}*/
// test water bucket
itemCodex[9000] = object : GameItem() {
override var dynamicID: ItemID = 9000
override val originalID: ItemID = 9000
override val isUnique: Boolean = true
override val originalName: String = "Infinite Water Bucket"
override var baseMass: Double = 1000.0
override var baseToolSize: Double? = null
override var inventoryCategory: String = "tool"
override var stackable: Boolean = false
override val isDynamic: Boolean = false
override val material: Material = Material(1,1,1,1,1,1,1,1,1,1.0)
override fun startSecondaryUse(delta: Float): Boolean {
return super.startSecondaryUse(delta)
}
}
// read from save (if applicable) and fill dynamicItemDescription

View File

@@ -42,8 +42,7 @@ internal object ExportMap : ConsoleCommand {
colorTable.put(Block.RAW_TOPAZ, Col4096(0xC70))
colorTable.put(Block.RAW_AMETHYST, Col4096(0x70C))
colorTable.put(Block.WATER, Col4096(0x038))
colorTable.put(Block.LAVA, Col4096(0xF50))
colorTable.put(Block.FLUID_MARKER, Col4096(0x038))
colorTable.put(Block.SAND, Col4096(0xDDB))
colorTable.put(Block.SAND_WHITE, Col4096(0xFFD))

View File

@@ -833,7 +833,7 @@ object WorldGenerator {
/* Flood */
private fun floodBottomLava() {
println("[mapgenerator] Flooding with lava...")
/*println("[mapgenerator] Flooding with lava...")
LoadScreen.addMessage("Flooding with lava...")
for (i in HEIGHT * 14 / 15..HEIGHT - 1) {
for (j in 0..WIDTH - 1) {
@@ -841,7 +841,7 @@ object WorldGenerator {
world.setTileTerrain(j, i, Block.LAVA)
}
}
}
}*/
}
/* Plant */
@@ -921,11 +921,11 @@ object WorldGenerator {
if (ix < OCEAN_WIDTH) {
if (worldOceanPosition == TYPE_OCEAN_LEFT) {
for (y in getTerrainHeightFromHeightMap(OCEAN_WIDTH)..getTerrainHeightFromHeightMap(ix) - 1) {
world.setTileTerrain(ix, y, Block.WATER)
//world.setTileTerrain(ix, y, Block.WATER)
}
} else if (worldOceanPosition == TYPE_OCEAN_RIGHT) {
for (y in getTerrainHeightFromHeightMap(world.width - 1 - OCEAN_WIDTH)..getTerrainHeightFromHeightMap(world.width - 1 - ix) - 1) {
world.setTileTerrain(world.width - 1 - ix, y, Block.WATER)
//world.setTileTerrain(world.width - 1 - ix, y, Block.WATER)
}
}
}

View File

@@ -2,7 +2,6 @@ package net.torvald.terrarum.serialise
import net.torvald.terrarum.AppLoader.printdbg
import net.torvald.terrarum.gameworld.BlockAddress
import net.torvald.terrarum.gameworld.BlockDamage
import net.torvald.terrarum.gameworld.MapLayer
import net.torvald.terrarum.gameworld.PairedMapLayer
import net.torvald.terrarum.realestate.LandUtil
@@ -153,8 +152,8 @@ internal object ReadLayerDataZip {
val spawnPoint = LandUtil.resolveBlockAddr(width, spawnAddress)
val terrainDamages = HashMap<BlockAddress, BlockDamage>()
val wallDamages = HashMap<BlockAddress, BlockDamage>()
val terrainDamages = HashMap<BlockAddress, Float>()
val wallDamages = HashMap<BlockAddress, Float>()
// parse terrain damages
for (c in 0 until payloadBytes["TdMG"]!!.size step 10) {
@@ -207,8 +206,8 @@ internal object ReadLayerDataZip {
val spawnX: Int,
val spawnY: Int,
val wallDamages: HashMap<BlockAddress, BlockDamage>,
val terrainDamages: HashMap<BlockAddress, BlockDamage>
val wallDamages: HashMap<BlockAddress, Float>,
val terrainDamages: HashMap<BlockAddress, Float>
)
private fun ByteArray.shiftLeftBy(size: Int, fill: Byte = 0.toByte()) {

View File

@@ -228,9 +228,9 @@ internal object BlocksDrawer {
Block.SANDSTONE_DESERT,
Block.SANDSTONE_RED,
Block.SANDSTONE_WHITE,
Block.SANDSTONE_GREEN,
Block.SANDSTONE_GREEN
Block.WATER,
/*lock.WATER,
Block.WATER_1,
Block.WATER_2,
Block.WATER_3,
@@ -261,7 +261,7 @@ internal object BlocksDrawer {
Block.LAVA_12,
Block.LAVA_13,
Block.LAVA_14,
Block.LAVA_15
Block.LAVA_15*/
)
/**
@@ -311,8 +311,8 @@ internal object BlocksDrawer {
* will blend colour using colour multiplication
* i.e. red hues get lost if you dive into the water
*/
private val TILES_BLEND_MUL = hashSetOf(
Block.WATER,
private val TILES_BLEND_MUL = hashSetOf(-1
/*Block.WATER,
Block.WATER_1,
Block.WATER_2,
Block.WATER_3,
@@ -343,7 +343,7 @@ internal object BlocksDrawer {
Block.LAVA_12,
Block.LAVA_13,
Block.LAVA_14,
Block.LAVA_15
Block.LAVA_15*/
)
/**

View File

@@ -215,9 +215,9 @@ object BlocksDrawerOLD {
Block.SANDSTONE_DESERT,
Block.SANDSTONE_RED,
Block.SANDSTONE_WHITE,
Block.SANDSTONE_GREEN,
Block.SANDSTONE_GREEN
Block.WATER,
/*Block.WATER,
Block.WATER_1,
Block.WATER_2,
Block.WATER_3,
@@ -248,7 +248,7 @@ object BlocksDrawerOLD {
Block.LAVA_12,
Block.LAVA_13,
Block.LAVA_14,
Block.LAVA_15
Block.LAVA_15*/
)
/**
@@ -298,8 +298,8 @@ object BlocksDrawerOLD {
* will blend colour using colour multiplication
* i.e. red hues get lost if you dive into the water
*/
private val TILES_BLEND_MUL = hashSetOf(
Block.WATER,
private val TILES_BLEND_MUL = hashSetOf(-1
/*Block.WATER,
Block.WATER_1,
Block.WATER_2,
Block.WATER_3,
@@ -330,7 +330,7 @@ object BlocksDrawerOLD {
Block.LAVA_12,
Block.LAVA_13,
Block.LAVA_14,
Block.LAVA_15
Block.LAVA_15*/
)
/**