diff --git a/assets/mods/basegame/fluid/fluids.csv b/assets/mods/basegame/fluid/fluids.csv index 6173dcede..a0dc4bfa4 100644 --- a/assets/mods/basegame/fluid/fluids.csv +++ b/assets/mods/basegame/fluid/fluids.csv @@ -1,3 +1,3 @@ "id";"name";"shdr";"shdg";"shdb";"shduv";"str";"dsty";"mate";"lumr";"lumg";"lumb";"lumuv";"colour";"vscs";"refl";"tags" -"1";"BLOCK_WATER";"0.1016";"0.0744";"0.0508";"0.0826";"100";"1000";"WATR";"0.0000";"0.0000";"0.0000";"0.0000";"005599A6";"16";"0.0";"NATURAL" -"2";"BLOCK_LAVA";"0.9696";"0.9696";"0.9696";"0.9696";"100";"2600";"ROCK"; "0.7664";"0.2032";"0.0000";"0.0000";"FF4600E6";"32";"0.0";"NATURAL,MOLTEN" +"1";"BLOCK_WATER";"0.1016";"0.0744";"0.0508";"0.0826";"100";"1000";"WATR";"0.0000";"0.0000";"0.0000";"0.0000";"005599A6";"5";"0.0";"NATURAL" +"2";"BLOCK_LAVA";"0.9696";"0.9696";"0.9696";"0.9696";"100";"2600";"ROCK"; "0.7664";"0.2032";"0.0000";"0.0000";"FF4600E6";"16";"0.0";"NATURAL,MOLTEN" diff --git a/src/net/torvald/terrarum/Prebuild.kt b/src/net/torvald/terrarum/Prebuild.kt index d9ddda083..daa1aaa29 100644 --- a/src/net/torvald/terrarum/Prebuild.kt +++ b/src/net/torvald/terrarum/Prebuild.kt @@ -17,11 +17,11 @@ VS_VERSION_INFO VERSIONINFO BLOCK "040904b0" { VALUE "FileDescription", "${TerrarumAppConfiguration.GAME_NAME}\0" - VALUE "FileVersion", "${App.getVERSION_STRING()}\0" + VALUE "FileVersion", "$major.$minor.$patch\0" VALUE "LegalCopyright", "${TerrarumAppConfiguration.COPYRIGHT_DATE_NAME}\0" VALUE "OriginalFilename", "${TerrarumAppConfiguration.GAME_NAME}.exe\0" VALUE "ProductName", "${TerrarumAppConfiguration.GAME_NAME}\0" - VALUE "ProductVersion", "${App.getVERSION_STRING()}\0" + VALUE "ProductVersion", "$major.$minor.$patch\0" } } BLOCK "VarFileInfo" @@ -42,7 +42,8 @@ private fun writeOSXPlist(major: Int, minor: Int, patch: Int) { CFBundleDisplayName${TerrarumAppConfiguration.GAME_NAME} CFBundleName${TerrarumAppConfiguration.GAME_NAME} CFBundleIconFileAppIcon.icns -CFBundleVersion${App.getVERSION_STRING()} +CFBundleVersion$major.$minor.$patch +LSApplicationCategoryTypepublic.app-category.games """ val f = File("./out/build_autogen_macos_Info.plist") f.delete() @@ -55,6 +56,7 @@ Name=${TerrarumAppConfiguration.GAME_NAME} Exec=AppRun Icon=icns Type=Application +Version=1.0 Categories=Game;""" val f = File("./out/build_autogen_linux.desktop") f.delete() diff --git a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt index 351e30835..3da823f5f 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt @@ -13,6 +13,8 @@ import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZEF import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockProp +import net.torvald.terrarum.blockproperties.FluidCodex +import net.torvald.terrarum.blockproperties.FluidProp import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.gameparticles.createRandomBlockParticle @@ -582,6 +584,10 @@ open class ActorWithBody : Actor { // printdbg(this, "BodyViscosity=$bodyViscosity FeetViscosity=$feetViscosity BodyFriction=$bodyFriction FeetFriction=$feetFriction") // } + controllerV?.let { + it.applyViscoseDrag() + } + val vecSum = (externalV + (controllerV ?: Vector2(0.0, 0.0))) /** * solveCollision()? @@ -1512,8 +1518,6 @@ open class ActorWithBody : Actor { if (world == null) return 0.0 val straightGravity = (world!!.gravitation.y > 0) - val dbgTYLs = HashSet() - val txL = (hitbox.startX / TILE_SIZED).floorToInt() val txR = (hitbox.endX / TILE_SIZED).floorToInt() var hL = 0 @@ -1523,7 +1527,6 @@ open class ActorWithBody : Actor { val ty = (y / TILE_SIZED).floorToInt() if (world!!.getFluid(txL, ty).amount >= FLUID_MIN_MASS) hL += 1 if (world!!.getFluid(txR, ty).amount >= FLUID_MIN_MASS) hR += 1 - dbgTYLs.add(ty) } // returns average of two sides @@ -2026,32 +2029,14 @@ open class ActorWithBody : Actor { if (world == null) return - val fluids = ArrayList() - - // offset 1 pixel to the down so that friction would work -// val y = hitbox.endY.plus(1.0).div(TILE_SIZE).floorToInt() - val y = intTilewiseHitbox.startY.toInt() + intTilewiseHitbox.height.toInt() + 1 - - for (x in hIntTilewiseHitbox.startX.toInt()..hIntTilewiseHitbox.endX.toInt()) { - fluids.add(world!!.getFluid(x, y)) - } - - return fluids.forEach(consumer) - } - - fun forEachFeetFluid(consumer: (GameWorld.FluidInfo?) -> Unit) { - if (world == null) return - - - val fluids = ArrayList() - + val tileProps = ArrayList() for (y in hIntTilewiseHitbox.startY.toInt()..hIntTilewiseHitbox.endY.toInt()) { for (x in hIntTilewiseHitbox.startX.toInt()..hIntTilewiseHitbox.endX.toInt()) { - fluids.add(world!!.getFluid(x, y)) + tileProps.add(world!!.getFluid(x, y)) } } - return fluids.forEach(consumer) + return tileProps.forEach(consumer) } fun forEachOccupyingTilePos(hitbox: Hitbox, consumer: (BlockAddress) -> Unit) { @@ -2131,6 +2116,23 @@ open class ActorWithBody : Actor { return tileProps.forEach(consumer) } + fun forEachFeetFluid(consumer: (GameWorld.FluidInfo?) -> Unit) { + if (world == null) return + + + val tileProps = ArrayList() + + // offset 1 pixel to the down so that friction would work +// val y = hitbox.endY.plus(1.0).div(TILE_SIZE).floorToInt() + val y = intTilewiseHitbox.startY.toInt() + intTilewiseHitbox.height.toInt() + 1 + + for (x in hIntTilewiseHitbox.startX.toInt()..hIntTilewiseHitbox.endX.toInt()) { + tileProps.add(world!!.getFluid(x, y)) + } + + return tileProps.forEach(consumer) + } + fun forEachFeetTileWithPos(consumer: (Point2i, ItemID) -> Unit) { val y = intTilewiseHitbox.startY.toInt() + intTilewiseHitbox.height.toInt() + 1 (hIntTilewiseHitbox.startX.toInt()..hIntTilewiseHitbox.endX.toInt()).map { x ->