From fe94ebbe4ab9194a16293f212b863b6ef53116af Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Wed, 19 Apr 2017 03:03:53 +0900 Subject: [PATCH] terrain damage data is now properly removed when the tile is newly placed --- src/net/torvald/terrarum/gameactors/ActorHumanoid.kt | 6 +++--- src/net/torvald/terrarum/gameworld/GameWorld.kt | 12 +++++++----- src/net/torvald/terrarum/mapdrawer/TilesDrawer.kt | 2 +- .../realestate/{RealEstateUtility.kt => LandUtil.kt} | 4 ++-- .../torvald/terrarum/realestate/RealEstateCodex.kt | 6 +++--- 5 files changed, 16 insertions(+), 14 deletions(-) rename src/net/torvald/terrarum/realestate/{RealEstateUtility.kt => LandUtil.kt} (89%) diff --git a/src/net/torvald/terrarum/gameactors/ActorHumanoid.kt b/src/net/torvald/terrarum/gameactors/ActorHumanoid.kt index 8259aa4d8..674f39ed3 100644 --- a/src/net/torvald/terrarum/gameactors/ActorHumanoid.kt +++ b/src/net/torvald/terrarum/gameactors/ActorHumanoid.kt @@ -6,7 +6,7 @@ import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gameactors.faction.Faction import net.torvald.terrarum.gamecontroller.EnumKeyFunc import net.torvald.terrarum.itemproperties.InventoryItem -import net.torvald.terrarum.realestate.RealEstateUtility +import net.torvald.terrarum.realestate.LandUtil import org.newdawn.slick.GameContainer import org.newdawn.slick.Input import java.util.* @@ -37,11 +37,11 @@ open class ActorHumanoid(birth: GameDate, death: GameDate? = null) override var houseDesignation: ArrayList? = ArrayList() override fun addHouseTile(x: Int, y: Int) { - if (houseDesignation != null) houseDesignation!!.add(RealEstateUtility.getAbsoluteTileNumber(x, y)) + if (houseDesignation != null) houseDesignation!!.add(LandUtil.getTileAddr(x, y)) } override fun removeHouseTile(x: Int, y: Int) { - if (houseDesignation != null) houseDesignation!!.remove(RealEstateUtility.getAbsoluteTileNumber(x, y)) + if (houseDesignation != null) houseDesignation!!.remove(LandUtil.getTileAddr(x, y)) } override fun clearHouseDesignation() { diff --git a/src/net/torvald/terrarum/gameworld/GameWorld.kt b/src/net/torvald/terrarum/gameworld/GameWorld.kt index a052396b3..b0a1ddb81 100644 --- a/src/net/torvald/terrarum/gameworld/GameWorld.kt +++ b/src/net/torvald/terrarum/gameworld/GameWorld.kt @@ -1,7 +1,7 @@ package net.torvald.terrarum.gameworld -import net.torvald.terrarum.realestate.RealEstateUtility +import net.torvald.terrarum.realestate.LandUtil import net.torvald.terrarum.tileproperties.TileCodex import org.dyn4j.geometry.Vector2 import org.newdawn.slick.SlickException @@ -142,11 +142,13 @@ class GameWorld(val width: Int, val height: Int) { fun setTileWall(x: Int, y: Int, tile: Byte, damage: Int) { layerWall.setTile(x fmod width, y, tile) layerWallLowBits.setData(x fmod width, y, damage) + wallDamages.remove(LandUtil.getTileAddr(x, y)) } fun setTileTerrain(x: Int, y: Int, tile: Byte, damage: Int) { layerTerrain.setTile(x fmod width, y, tile) layerTerrainLowBits.setData(x fmod width, y, damage) + terrainDamages.remove(LandUtil.getTileAddr(x, y)) } fun setTileWire(x: Int, y: Int, tile: Byte) { @@ -216,7 +218,7 @@ class GameWorld(val width: Int, val height: Int) { * @return true if block is broken */ fun inflctTerrainDamage(x: Int, y: Int, damage: Float): Boolean { - val addr = RealEstateUtility.getAbsoluteTileNumber(x, y) + val addr = LandUtil.getTileAddr(x, y) if (terrainDamages[addr] == null) { // add new terrainDamages[addr] = damage @@ -239,13 +241,13 @@ class GameWorld(val width: Int, val height: Int) { return false } fun getTerrainDamage(x: Int, y: Int): Float = - terrainDamages[RealEstateUtility.getAbsoluteTileNumber(x, y)] ?: 0f + terrainDamages[LandUtil.getTileAddr(x, y)] ?: 0f /** * @return true if block is broken */ fun inflctWallDamage(x: Int, y: Int, damage: Float): Boolean { - val addr = RealEstateUtility.getAbsoluteTileNumber(x, y) + val addr = LandUtil.getTileAddr(x, y) if (wallDamages[addr] == null) { // add new wallDamages[addr] = damage @@ -266,7 +268,7 @@ class GameWorld(val width: Int, val height: Int) { return false } fun getWallDamage(x: Int, y: Int): Float = - wallDamages[RealEstateUtility.getAbsoluteTileNumber(x, y)] ?: 0f + wallDamages[LandUtil.getTileAddr(x, y)] ?: 0f companion object { diff --git a/src/net/torvald/terrarum/mapdrawer/TilesDrawer.kt b/src/net/torvald/terrarum/mapdrawer/TilesDrawer.kt index 3b7e3e1d5..e129cefa3 100644 --- a/src/net/torvald/terrarum/mapdrawer/TilesDrawer.kt +++ b/src/net/torvald/terrarum/mapdrawer/TilesDrawer.kt @@ -14,7 +14,7 @@ import net.torvald.terrarum.mapdrawer.MapCamera.x import net.torvald.terrarum.mapdrawer.MapCamera.y import net.torvald.terrarum.mapdrawer.MapCamera.height import net.torvald.terrarum.mapdrawer.MapCamera.width -import net.torvald.terrarum.realestate.RealEstateUtility +import net.torvald.terrarum.realestate.LandUtil import org.lwjgl.opengl.GL11 import org.newdawn.slick.* import java.util.* diff --git a/src/net/torvald/terrarum/realestate/RealEstateUtility.kt b/src/net/torvald/terrarum/realestate/LandUtil.kt similarity index 89% rename from src/net/torvald/terrarum/realestate/RealEstateUtility.kt rename to src/net/torvald/terrarum/realestate/LandUtil.kt index 0d1755840..1a077a3f5 100644 --- a/src/net/torvald/terrarum/realestate/RealEstateUtility.kt +++ b/src/net/torvald/terrarum/realestate/LandUtil.kt @@ -7,8 +7,8 @@ import net.torvald.terrarum.gameworld.TileAddress /** * Created by minjaesong on 16-03-27. */ -object RealEstateUtility { - fun getAbsoluteTileNumber(x: Int, y: Int): TileAddress = +object LandUtil { + fun getTileAddr(x: Int, y: Int): TileAddress = (Terrarum.ingame!!.world.width * y).toLong() + x fun resolveAbsoluteTileNumber(t: TileAddress): Pair = diff --git a/src/net/torvald/terrarum/realestate/RealEstateCodex.kt b/src/net/torvald/terrarum/realestate/RealEstateCodex.kt index b317ea6cb..6b0c6ad4b 100644 --- a/src/net/torvald/terrarum/realestate/RealEstateCodex.kt +++ b/src/net/torvald/terrarum/realestate/RealEstateCodex.kt @@ -15,13 +15,13 @@ object RealEstateCodex { private var ownershipRegistry: HashMap = HashMap() fun setOwner(tileX: Int, tileY: Int, refID: Int) { - ownershipRegistry[RealEstateUtility.getAbsoluteTileNumber(tileX, tileY)] = refID + ownershipRegistry[LandUtil.getTileAddr(tileX, tileY)] = refID } fun removeOwner(tileX: Int, tileY: Int) { - ownershipRegistry.remove(RealEstateUtility.getAbsoluteTileNumber(tileX, tileY)) + ownershipRegistry.remove(LandUtil.getTileAddr(tileX, tileY)) } fun getOwner(tileX: Int, tileY: Int): Int? = - ownershipRegistry[RealEstateUtility.getAbsoluteTileNumber(tileX, tileY)] + ownershipRegistry[LandUtil.getTileAddr(tileX, tileY)] } \ No newline at end of file