From af29e1b59859a94f77cbcdf1e802a3d78b1e7d77 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sun, 9 Jun 2019 01:26:14 +0900 Subject: [PATCH] intbox debugger is back --- assets/graphics/function_row_help.png | Bin 13597 -> 15675 bytes src/net/torvald/terrarum/AppLoader.java | 3 +- .../terrarum/gameactors/ActorWBMovable.kt | 45 +++++++++++------- .../torvald/terrarum/gameworld/BlockLayer.kt | 1 - .../terrarum/modulebasegame/BuildingMaker.kt | 3 +- .../modulebasegame/gameitems/BlockBase.kt | 1 + work_files/graphics/function_row_help.psd | 4 +- 7 files changed, 34 insertions(+), 23 deletions(-) diff --git a/assets/graphics/function_row_help.png b/assets/graphics/function_row_help.png index 4feebd98dd0b16a3c6c7f6f1c01d5cb4cd746a86..a81da17bca7d8784ed9cfc567f1059786cb4c6b5 100644 GIT binary patch literal 15675 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 S(y8>QIQY1Q5HA? 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 diff --git a/src/net/torvald/terrarum/AppLoader.java b/src/net/torvald/terrarum/AppLoader.java index 98d3e1253..3ff910edd 100644 --- a/src/net/torvald/terrarum/AppLoader.java +++ b/src/net/torvald/terrarum/AppLoader.java @@ -291,6 +291,7 @@ public class AppLoader implements ApplicationListener { @Override public void create() { resourcePool = CommonResourcePool.INSTANCE; + resourcePool.addToLoadingList("blockmarkings_common", () -> new TextureRegionPack(Gdx.files.internal("assets/graphics/blocks/block_markings_common.tga"), 16, 16, 0, 0, 0, 0, false)); newTempFile("wenquanyi.tga"); // temp file required by the font @@ -622,7 +623,7 @@ public class AppLoader implements ApplicationListener { private void setCameraPosition(float newX, float newY) { - camera.position.set((-newX + appConfig.width / 2), (-newY + appConfig.height / 2), 0f); + camera.position.set((-newX + appConfig.width / 2), (-newY + appConfig.height / 2), 0f); // deliberate integer division camera.update(); logoBatch.setProjectionMatrix(camera.combined); } diff --git a/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt b/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt index a043a74b4..bb5d020eb 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWBMovable.kt @@ -1,5 +1,7 @@ package net.torvald.terrarum.gameactors +import com.badlogic.gdx.Input +import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.spriteanimation.SpriteAnimation import net.torvald.terrarum.* @@ -7,6 +9,7 @@ import net.torvald.terrarum.AppLoader.printdbg import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.blockproperties.BlockProp +import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gameworld.BlockAddress import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid @@ -1354,25 +1357,33 @@ open class ActorWBMovable(renderOrder: RenderOrder, val immobileBody: Boolean = override fun drawBody(batch: SpriteBatch) { if (isVisible && sprite != null) { - //if (!KeyToggler.isOn(Input.Keys.F12)) { - BlendMode.resolve(drawMode, batch) - drawSpriteInGoodPosition(sprite!!, batch) - /*} - // ye olde tilewiseposition debugger, we don't use it anymore. - else { - batch.color = Color.NAVY - val hb = intTilewiseHitbox + BlendMode.resolve(drawMode, batch) + drawSpriteInGoodPosition(sprite!!, batch) + } - batch.fillRect( - hb.startX.toFloat() * TILE_SIZE, - hb.startY.toFloat() * TILE_SIZE, - hb.width.toFloat() * TILE_SIZE, - hb.height.toFloat() * TILE_SIZE - ) + // debug display of hIntTilewiseHitbox + if (KeyToggler.isOn(Input.Keys.F9)) { + val blockMark = AppLoader.resourcePool.getAsTextureRegionPack("blockmarkings_common").get(0, 0) - batch.color = Color.VIOLET - batch.fillRect(hitbox.startX.toFloat(), hitbox.startY.toFloat(), hitbox.width.toFloat(), hitbox.height.toFloat()) - }*/ + batch.color = Color.MAGENTA + for (y in 0 until intTilewiseHitbox.height.toInt()) { + for (x in 0 until intTilewiseHitbox.width.toInt()) { + batch.draw(blockMark, + (intTilewiseHitbox.startX.toFloat() + x) * TILE_SIZEF, + (intTilewiseHitbox.startY.toFloat() * y) * TILE_SIZEF + ) + } + } + + batch.color = Color.YELLOW + for (y in 0 until hIntTilewiseHitbox.height.toInt()) { + for (x in 0 until hIntTilewiseHitbox.width.toInt()) { + batch.draw(blockMark, + (hIntTilewiseHitbox.startX.toFloat() + x) * TILE_SIZEF, + (hIntTilewiseHitbox.startY.toFloat() * y) * TILE_SIZEF + ) + } + } } } diff --git a/src/net/torvald/terrarum/gameworld/BlockLayer.kt b/src/net/torvald/terrarum/gameworld/BlockLayer.kt index a1c109204..44f209eb7 100644 --- a/src/net/torvald/terrarum/gameworld/BlockLayer.kt +++ b/src/net/torvald/terrarum/gameworld/BlockLayer.kt @@ -38,7 +38,6 @@ open class BlockLayer(val width: Int, val height: Int) : Disposable { * TL;DR: LITTLE ENDIAN PLEASE */ constructor(width: Int, height: Int, data: ByteArray) : this(width, height) { - unsafe.allocateMemory(width * height * BYTES_PER_BLOCK.toLong()) data.forEachIndexed { index, byte -> unsafe.putByte(layerPtr + index, byte) } unsafeArrayInitialised = true } diff --git a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt index 87a57d711..32eaccad6 100644 --- a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt +++ b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt @@ -30,7 +30,6 @@ import net.torvald.terrarum.ui.UINSMenu import net.torvald.terrarum.worlddrawer.CreateTileAtlas.TILE_SIZE import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarum.worlddrawer.WorldCamera -import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import java.io.File import java.io.FileOutputStream @@ -134,7 +133,7 @@ class BuildingMaker(batch: SpriteBatch) : IngameInstance(batch) { val selection = ArrayList() - val blockMarkings = TextureRegionPack(Gdx.files.internal("assets/graphics/blocks/block_markings_common.tga"), 16, 16) + val blockMarkings = AppLoader.resourcePool.getAsTextureRegionPack("blockmarkings_common") internal var showSelection = true val blockPointingCursor = object : ActorWithBody(Actor.RenderOrder.OVERLAY) { diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt index 924c592e8..a5a8d4668 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/BlockBase.kt @@ -27,6 +27,7 @@ object BlockBase { // check for collision with actors (BLOCK only) // FIXME properly fix the collision detection: it OVERRIDES the tiki-torches which should not happen AT ALL + // FIXME (h)IntTilewiseHitbox is badly defined if (gameItem.inventoryCategory == GameItem.Category.BLOCK) { var ret1 = true ingame.actorContainerActive.forEach { diff --git a/work_files/graphics/function_row_help.psd b/work_files/graphics/function_row_help.psd index 36b3075f7..b1447e23a 100644 --- a/work_files/graphics/function_row_help.psd +++ b/work_files/graphics/function_row_help.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cfbc20cf2d7ab7b91e9fa02e477396af4fa881b7792715bce1e663f30b672797 -size 82357 +oid sha256:2541dab2f4d6d58edc61d289b177037e4b0b5094ed906e15ad066a4cd19ab977 +size 85697