From 3de9cedec33c93f4bc9a624405bb2f4c18351271 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Wed, 10 May 2017 21:02:05 +0900 Subject: [PATCH] code cleanup related to ActorWithPhysics --- src/net/torvald/terrarum/StateInGame.kt | 6 +++--- .../torvald/terrarum/gameactors/ActorWithPhysics.kt | 1 - src/net/torvald/terrarum/gameactors/Hitbox.kt | 2 +- .../torvald/terrarum/gameactors/ProjectileSimple.kt | 2 +- src/net/torvald/terrarum/gameactors/ai/AILuaAPI.kt | 5 +++-- .../gameactors/physicssolver/CollisionSolver.kt | 11 +++++++---- 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/net/torvald/terrarum/StateInGame.kt b/src/net/torvald/terrarum/StateInGame.kt index e0da95e20..fcbae6d56 100644 --- a/src/net/torvald/terrarum/StateInGame.kt +++ b/src/net/torvald/terrarum/StateInGame.kt @@ -458,12 +458,12 @@ class StateInGame : BasicGameState() { // velocity worldG.color = GameFontBase.codeToCol["g"] worldG.drawString( - "${0x7F.toChar()}X ${actor.moveDelta.x}", + "${0x7F.toChar()}X ${actor.externalForce.x}", actor.hitbox.posX.toFloat(), actor.hitbox.pointedY.toFloat() + 4 + 8 ) worldG.drawString( - "${0x7F.toChar()}Y ${actor.moveDelta.y}", + "${0x7F.toChar()}Y ${actor.externalForce.y}", actor.hitbox.posX.toFloat(), actor.hitbox.pointedY.toFloat() + 4 + 8 * 2 ) @@ -510,7 +510,7 @@ class StateInGame : BasicGameState() { } override fun keyPressed(key: Int, c: Char) { - if (key == Key.GRAVE) { + if (key == Key.GRAVE || key == Key.ESCAPE) { consoleHandler.toggleOpening() } else if (key == Key.F3) { diff --git a/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt b/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt index 686acc726..486359f36 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt @@ -71,7 +71,6 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean */ internal val externalForce = Vector2(0.0, 0.0) - //val moveDelta = Vector2(0.0, 0.0) // moveDelta = velocity + controllerMoveDelta @Transient private val VELO_HARD_LIMIT = 100.0 /** diff --git a/src/net/torvald/terrarum/gameactors/Hitbox.kt b/src/net/torvald/terrarum/gameactors/Hitbox.kt index 4b1d4a9e0..a291a0f90 100644 --- a/src/net/torvald/terrarum/gameactors/Hitbox.kt +++ b/src/net/torvald/terrarum/gameactors/Hitbox.kt @@ -80,7 +80,7 @@ class Hitbox(x1: Double, y1: Double, width: Double, height: Double) { fun setPositionX(x: Double) = setPosition(x, posY) fun setPositionY(y: Double) = setPosition(posX, y) - fun setPositionFromPoint(x1: Double, y1: Double): Hitbox { + fun setPositionFromPointed(x1: Double, y1: Double): Hitbox { hitboxStart = Point2d(x1 - width / 2, y1 - height) return this } diff --git a/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt b/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt index ce9181440..bcffdfe47 100644 --- a/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt +++ b/src/net/torvald/terrarum/gameactors/ProjectileSimple.kt @@ -71,7 +71,7 @@ open class ProjectileSimple( override fun update(gc: GameContainer, delta: Int) { // hit something and despawn lifetimeCounter += delta - if (ccdCollided || grounded || lifetimeCounter >= lifetimeMax || + if (grounded || lifetimeCounter >= lifetimeMax || // ccdCollided || // stuck check BlockCodex[Terrarum.ingame!!.world.getTileFromTerrain(feetPosTile[0], feetPosTile[1]) ?: Block.STONE].isSolid ) { diff --git a/src/net/torvald/terrarum/gameactors/ai/AILuaAPI.kt b/src/net/torvald/terrarum/gameactors/ai/AILuaAPI.kt index 6e2db2b38..14b0c7e67 100644 --- a/src/net/torvald/terrarum/gameactors/ai/AILuaAPI.kt +++ b/src/net/torvald/terrarum/gameactors/ai/AILuaAPI.kt @@ -55,13 +55,14 @@ internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) { */ fun composeActorObject(actor: ActorWithPhysics): LuaTable { val t: LuaTable = LuaTable() + val moveDelta = actor.externalForce + actor.controllerMoveDelta t["name"] = actor.actorValue.getAsString(AVKey.NAME).toLua() t["posX"] = actor.hitbox.centeredX.toLua() t["posY"] = actor.hitbox.centeredY.toLua() - t["veloX"] = actor.moveDelta.x.toLua() - t["veloY"] = actor.moveDelta.y.toLua() + t["veloX"] = moveDelta.x.toLua() + t["veloY"] = moveDelta.y.toLua() t["width"] = actor.hitbox.width.toLua() t["height"] = actor.hitbox.height.toLua() diff --git a/src/net/torvald/terrarum/gameactors/physicssolver/CollisionSolver.kt b/src/net/torvald/terrarum/gameactors/physicssolver/CollisionSolver.kt index dc552fca9..939b61537 100644 --- a/src/net/torvald/terrarum/gameactors/physicssolver/CollisionSolver.kt +++ b/src/net/torvald/terrarum/gameactors/physicssolver/CollisionSolver.kt @@ -150,10 +150,13 @@ object CollisionSolver { // if they actually makes collision (e.g. player vs ball), solve it if (a makesCollisionWith b) { - val ux_1 = a.moveDelta.x - val ux_2 = b.moveDelta.x - val uy_1 = a.moveDelta.y - val uy_2 = b.moveDelta.y + val a_moveDelta = a.externalForce + a.controllerMoveDelta + val b_moveDelta = b.externalForce + b.controllerMoveDelta + + val ux_1 = a_moveDelta.x + val ux_2 = b_moveDelta.x + val uy_1 = a_moveDelta.y + val uy_2 = b_moveDelta.y val m1 = a.mass val m2 = b.mass