From 7624e37bdac3aa73a312cb528dcc6fb446ccda27 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 31 Jul 2021 19:13:29 +0900 Subject: [PATCH] making wire actor's hitbox bigger so their disappearance on the screen edge won't be visible --- src/net/torvald/terrarum/gameactors/ActorWithBody.kt | 2 +- src/net/torvald/terrarum/gameactors/WireActor.kt | 12 +++++++++++- src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt | 6 ++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt index 562bba886..73c2776a5 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt @@ -1613,7 +1613,7 @@ open class ActorWithBody(renderOrder: RenderOrder, val physProp: PhysProperties) } } - private fun drawSpriteInGoodPosition(sprite: SpriteAnimation, batch: SpriteBatch) { + protected fun drawSpriteInGoodPosition(sprite: SpriteAnimation, batch: SpriteBatch) { if (world == null) return diff --git a/src/net/torvald/terrarum/gameactors/WireActor.kt b/src/net/torvald/terrarum/gameactors/WireActor.kt index 794e439b0..82f6b6ed8 100644 --- a/src/net/torvald/terrarum/gameactors/WireActor.kt +++ b/src/net/torvald/terrarum/gameactors/WireActor.kt @@ -1,6 +1,8 @@ package net.torvald.terrarum.gameactors +import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.AppLoader.printdbg +import net.torvald.terrarum.BlendMode import net.torvald.terrarum.CommonResourcePool import net.torvald.terrarum.Point2i import net.torvald.terrarum.Terrarum @@ -38,6 +40,8 @@ class WireActor(id: ActorID) : ActorWithBody(RenderOrder.WIRES, PhysProperties.I * @param itemID must start with "wire@" */ fun setWire(itemID: ItemID, worldX: Int, worldY: Int) { + setHitboxDimension(TILE_SIZE, TILE_SIZE, 0, 0) + if (oldWireId != itemID) { if (sprite == null) { makeNewSprite(CommonResourcePool.getAsTextureRegionPack(itemID)) @@ -50,7 +54,7 @@ class WireActor(id: ActorID) : ActorWithBody(RenderOrder.WIRES, PhysProperties.I } this.worldX = worldX this.worldY = worldY - setPosition(worldX * TILE_SIZE + 1.0, (worldY + 1.0) * TILE_SIZE - 1.0) // what the fuck? + setPosition((worldX + 0.5) * TILE_SIZE, (worldY + 1.0) * TILE_SIZE - 1.0) // what the fuck? sprite!!.currentRow = 1 @@ -77,4 +81,10 @@ class WireActor(id: ActorID) : ActorWithBody(RenderOrder.WIRES, PhysProperties.I } + override fun drawBody(batch: SpriteBatch) { + if (isVisible && sprite != null) { + BlendMode.resolve(drawMode, batch) + drawSpriteInGoodPosition(sprite!!, batch) + } + } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt index 2225f9895..1c3206ea2 100644 --- a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt +++ b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt @@ -80,6 +80,8 @@ class BasicDebugInfoWindow : UICanvas() { val hitbox = player?.hitbox + val updateCount = maxOf(1L, (AppLoader.debugTimers["Ingame.UpdateCounter"] ?: 1L) as Long) + /** * First column */ @@ -123,8 +125,8 @@ class BasicDebugInfoWindow : UICanvas() { printLine(batch, 5, "p_WalkX $ccG${player.controllerV?.x}") printLine(batch, 6, "p_WalkY $ccG${player.controllerV?.y}") - printLineColumn(batch, 2, 3, "veloX measured $ccG${xdelta}") - printLineColumn(batch, 2, 4, "veloY measured $ccG${ydelta}") + printLineColumn(batch, 2, 3, "veloX measured $ccG${xdelta / updateCount}") + printLineColumn(batch, 2, 4, "veloY measured $ccG${ydelta / updateCount}") printLineColumn(batch, 1, 7, "walled " +