From 5d357bd3f6d0c0dd993544127e562403ab200a50 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 2 Oct 2021 22:49:44 +0900 Subject: [PATCH] h o p e f u l l y --- src/net/torvald/terrarum/IngameInstance.kt | 6 ++++-- src/net/torvald/terrarum/gameworld/WorldSimulator.kt | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/net/torvald/terrarum/IngameInstance.kt b/src/net/torvald/terrarum/IngameInstance.kt index 7aebd55f6..47a2490f0 100644 --- a/src/net/torvald/terrarum/IngameInstance.kt +++ b/src/net/torvald/terrarum/IngameInstance.kt @@ -3,6 +3,7 @@ package net.torvald.terrarum import com.badlogic.gdx.Screen import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.App.printdbg +import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.ActorID import net.torvald.terrarum.gameactors.ActorWithBody @@ -396,8 +397,8 @@ open class IngameInstance(val batch: SpriteBatch) : Screen { private val actorDistanceCalculator = DistanceCalculator { t: ActorWithBody, p: PointND -> val dist1 = (p.getOrd(0) - t.hitbox.centeredX).sqr() + (p.getOrd(1) - t.hitbox.centeredY).sqr() // ROUNDWORLD implementation - val dist2 = (p.getOrd(0) - (t.hitbox.centeredX - world.width * TerrarumAppConfiguration.TILE_SIZE)).sqr() + (p.getOrd(1) - t.hitbox.centeredY).sqr() - val dist3 = (p.getOrd(0) - (t.hitbox.centeredX + world.width * TerrarumAppConfiguration.TILE_SIZE)).sqr() + (p.getOrd(1) - t.hitbox.centeredY).sqr() + val dist2 = (p.getOrd(0) - (t.hitbox.centeredX - world.width * TILE_SIZE)).sqr() + (p.getOrd(1) - t.hitbox.centeredY).sqr() + val dist3 = (p.getOrd(0) - (t.hitbox.centeredX + world.width * TILE_SIZE)).sqr() + (p.getOrd(1) - t.hitbox.centeredY).sqr() minOf(dist1, minOf(dist2, dist3)) } @@ -424,6 +425,7 @@ open class IngameInstance(val batch: SpriteBatch) : Screen { } /** Will use centre point of the actors + * HOPEFULLY sorted by the distance...? * @return List of DistanceResult, list may be empty */ fun findKNearestActors(from: ActorWithBody, maxHits: Int, nodeFilter: (ActorWithBody) -> Boolean): List> { return actorsRTree.nearestNeighbour(actorDistanceCalculator, nodeFilter, maxHits, object : PointND { diff --git a/src/net/torvald/terrarum/gameworld/WorldSimulator.kt b/src/net/torvald/terrarum/gameworld/WorldSimulator.kt index 2e3bdef16..7b1da3b45 100644 --- a/src/net/torvald/terrarum/gameworld/WorldSimulator.kt +++ b/src/net/torvald/terrarum/gameworld/WorldSimulator.kt @@ -154,9 +154,9 @@ object WorldSimulator { val s = actor.scale val w = actor.baseHitboxW * s val h = actor.baseHitboxH * s - val pickupDistance = w*w + h*h// TODO refer to the actorValue -// println("${result.distance}\t$pickupDistance") - if (result.distance < pickupDistance) { + val pickupDistSqr = w*w + h*h// TODO refer to the actorValue +// println("${result.distance}\pickupDistSqr") + if (result.distance < pickupDistSqr) { droppedItem.flagDespawn = true (actor as Pocketed).inventory.add(droppedItem.itemID, droppedItem.itemCount) break