mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-11 02:54:04 +09:00
hiding the phys artefact by forcefully holding down-key for long enough
This commit is contained in:
@@ -4,7 +4,6 @@ import com.badlogic.gdx.Input
|
|||||||
import com.badlogic.gdx.graphics.Color
|
import com.badlogic.gdx.graphics.Color
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||||
import com.badlogic.gdx.graphics.g2d.TextureRegion
|
import com.badlogic.gdx.graphics.g2d.TextureRegion
|
||||||
import com.jme3.math.FastMath
|
|
||||||
import net.torvald.spriteanimation.SheetSpriteAnimation
|
import net.torvald.spriteanimation.SheetSpriteAnimation
|
||||||
import net.torvald.spriteanimation.SpriteAnimation
|
import net.torvald.spriteanimation.SpriteAnimation
|
||||||
import net.torvald.terrarum.*
|
import net.torvald.terrarum.*
|
||||||
@@ -795,7 +794,7 @@ open class ActorWithBody : Actor {
|
|||||||
// ignore MOST of the codes below (it might be possible to recycle the structure??)
|
// ignore MOST of the codes below (it might be possible to recycle the structure??)
|
||||||
// and the idea above has not yet implemented, and may never will. --Torvald, 2018-12-30
|
// and the idea above has not yet implemented, and may never will. --Torvald, 2018-12-30
|
||||||
|
|
||||||
val downDown = if (this is ActorHumanoid) this.isDownDown else false
|
val downDown = if (this is ActorHumanoid) this.downButtonHeld > 0 else false
|
||||||
|
|
||||||
val sixteenStep = (0..ccdSteps).map { hitbox.clone().translate(vectorSum * (it / ccdSteps.toDouble())) }
|
val sixteenStep = (0..ccdSteps).map { hitbox.clone().translate(vectorSum * (it / ccdSteps.toDouble())) }
|
||||||
var collidingStep: Int? = null
|
var collidingStep: Int? = null
|
||||||
@@ -1092,7 +1091,7 @@ open class ActorWithBody : Actor {
|
|||||||
// grounded = true
|
// grounded = true
|
||||||
|
|
||||||
// another platform-related hacks
|
// another platform-related hacks
|
||||||
if (this is ActorHumanoid) downDownVirtually = false
|
// if (this is ActorHumanoid) downButtonHeld = false
|
||||||
|
|
||||||
}
|
}
|
||||||
}// end of collision not detected
|
}// end of collision not detected
|
||||||
@@ -1402,7 +1401,7 @@ open class ActorWithBody : Actor {
|
|||||||
// platforms, moving downward AND not "going down"
|
// platforms, moving downward AND not "going down"
|
||||||
(this is ActorHumanoid && BlockCodex[tile].isPlatform &&
|
(this is ActorHumanoid && BlockCodex[tile].isPlatform &&
|
||||||
externalV.y + (controllerV?.y ?: 0.0) >= 0.0 &&
|
externalV.y + (controllerV?.y ?: 0.0) >= 0.0 &&
|
||||||
!this.isDownDown && this.axisY <= 0f) ||
|
this.downButtonHeld == 0 && this.axisY <= 0f) ||
|
||||||
// platforms, moving downward, for the case of NOT ActorHumanoid
|
// platforms, moving downward, for the case of NOT ActorHumanoid
|
||||||
(this !is ActorHumanoid && BlockCodex[tile].isPlatform &&
|
(this !is ActorHumanoid && BlockCodex[tile].isPlatform &&
|
||||||
externalV.y + (controllerV?.y ?: 0.0) >= 0.0)
|
externalV.y + (controllerV?.y ?: 0.0) >= 0.0)
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import net.torvald.terrarum.App.printdbg
|
|||||||
import net.torvald.terrarum.gameactors.*
|
import net.torvald.terrarum.gameactors.*
|
||||||
import net.torvald.terrarum.gameactors.faction.Faction
|
import net.torvald.terrarum.gameactors.faction.Faction
|
||||||
import net.torvald.terrarum.gameitems.GameItem
|
import net.torvald.terrarum.gameitems.GameItem
|
||||||
import net.torvald.terrarum.itemproperties.Material
|
|
||||||
import net.torvald.terrarum.realestate.LandUtil
|
import net.torvald.terrarum.realestate.LandUtil
|
||||||
import org.dyn4j.geometry.Vector2
|
import org.dyn4j.geometry.Vector2
|
||||||
|
|
||||||
@@ -116,6 +115,8 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
|
|||||||
|
|
||||||
@Transient const val SPRITE_ROW_IDLE = 0
|
@Transient const val SPRITE_ROW_IDLE = 0
|
||||||
@Transient const val SPRITE_ROW_WALK = 1
|
@Transient const val SPRITE_ROW_WALK = 1
|
||||||
|
|
||||||
|
@Transient const val downDownMinLengthBase = 12
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
@@ -173,7 +174,7 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
|
|||||||
|
|
||||||
var isUpDown = false; protected set
|
var isUpDown = false; protected set
|
||||||
var isDownDown = false; protected set
|
var isDownDown = false; protected set
|
||||||
var downDownVirtually = false; internal set
|
var downButtonHeld = 0; internal set
|
||||||
var isLeftDown = false; protected set
|
var isLeftDown = false; protected set
|
||||||
var isRightDown = false; protected set
|
var isRightDown = false; protected set
|
||||||
var isJumpDown = false; protected set
|
var isJumpDown = false; protected set
|
||||||
@@ -221,7 +222,7 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
|
|||||||
if (isNoClip) {
|
if (isNoClip) {
|
||||||
//grounded = true
|
//grounded = true
|
||||||
// platformToIgnore = null
|
// platformToIgnore = null
|
||||||
downDownVirtually = false
|
downButtonHeld = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset control box of AI
|
// reset control box of AI
|
||||||
@@ -248,6 +249,9 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val downDownMinLength: Int
|
||||||
|
get() = (downDownMinLengthBase * gravitation.y.abs() / 9.8).ceilToInt()
|
||||||
|
|
||||||
private fun updateGamerControlBox() {
|
private fun updateGamerControlBox() {
|
||||||
if (isGamer) {
|
if (isGamer) {
|
||||||
isUpDown = Gdx.input.isKeyPressed(App.getConfigInt("control_key_up"))
|
isUpDown = Gdx.input.isKeyPressed(App.getConfigInt("control_key_up"))
|
||||||
@@ -288,16 +292,11 @@ open class ActorHumanoid : ActorWithBody, Controllable, Pocketed, Factionable, L
|
|||||||
}
|
}
|
||||||
|
|
||||||
// platform-related hacks
|
// platform-related hacks
|
||||||
// allow latching down downDownVirtually only when standing on a platform AND not jumping upwards
|
if (isDownDown || downButtonHeld in 1 until downDownMinLength) {
|
||||||
val occupyingTileHasPlatform = bodyTiles.filterNotNull().any { it.isPlatform }
|
downButtonHeld += 1
|
||||||
val feetTileHasPlatform = feetTiles.filterNotNull().any { it.isPlatform }
|
|
||||||
val feetTileIsAllPlatform = feetTiles.filterNotNull().all { it.isPlatform }
|
|
||||||
if (isDownDown && feetTileIsAllPlatform && (controllerV?.y ?: 0.0) >= 0.0) {// ||
|
|
||||||
// occupyingTileHasPlatform && !feetTileHasPlatform) { // FIXME commenting this out enables platform-ladder but falldown gets slowed down if the body passes thru the platform but I think this behav might be beneficial for player?
|
|
||||||
// downDownVirtually = true
|
|
||||||
}
|
}
|
||||||
if (downDownVirtually && !occupyingTileHasPlatform && !feetTileIsAllPlatform) {
|
else {
|
||||||
// downDownVirtually = false
|
downButtonHeld = 0
|
||||||
}
|
}
|
||||||
// TODO just disable "snap to ground" on collision solver if {player's body overlaps with the platform/downDownVirtually}?
|
// TODO just disable "snap to ground" on collision solver if {player's body overlaps with the platform/downDownVirtually}?
|
||||||
// the point is: disable snap (or don't consider offending tiles as solid) for certain Y-pos only, tiles on Y+1 are still solid
|
// the point is: disable snap (or don't consider offending tiles as solid) for certain Y-pos only, tiles on Y+1 are still solid
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ class BasicDebugInfoWindow : UICanvas() {
|
|||||||
App.fontSmallNumbers.draw(batch, "${if (player.jumping) "$ccG" else "$ccK"}JM", gap + 7f*(jX + 8), line(jY))
|
App.fontSmallNumbers.draw(batch, "${if (player.jumping) "$ccG" else "$ccK"}JM", gap + 7f*(jX + 8), line(jY))
|
||||||
App.fontSmallNumbers.draw(batch, "${if (player.isJumpDown) "$ccG" else "$ccK"}KY", gap + 7f*(jX + 8), line(jY+1))
|
App.fontSmallNumbers.draw(batch, "${if (player.isJumpDown) "$ccG" else "$ccK"}KY", gap + 7f*(jX + 8), line(jY+1))
|
||||||
|
|
||||||
App.fontSmallNumbers.draw(batch, "${if (player.downDownVirtually) "$ccG" else "$ccK"}$ARROW_DOWN", gap + 7f*(jX + 11), line(jY+1))
|
App.fontSmallNumbers.draw(batch, "${if (player.downButtonHeld > 0) "$ccG" else "$ccK"}$ARROW_DOWN", gap + 7f*(jX + 11), line(jY+1))
|
||||||
|
|
||||||
App.fontSmallNumbers.draw(batch, "$WIDTH$ccG${player.hitbox.width.toString().padEnd(5).substring(0,5).trim()}$ccY$HEIGHT$ccG${player.hitbox.height.toString().padEnd(5).substring(0,5)}", gap + 7f*(jX + 13), line(jY))
|
App.fontSmallNumbers.draw(batch, "$WIDTH$ccG${player.hitbox.width.toString().padEnd(5).substring(0,5).trim()}$ccY$HEIGHT$ccG${player.hitbox.height.toString().padEnd(5).substring(0,5)}", gap + 7f*(jX + 13), line(jY))
|
||||||
App.fontSmallNumbers.draw(batch, "$MASS$ccG${player.mass.toString().padEnd(8).substring(0,8)}", gap + 7f*(jX + 13), line(jY+1))
|
App.fontSmallNumbers.draw(batch, "$MASS$ccG${player.mass.toString().padEnd(8).substring(0,8)}", gap + 7f*(jX + 13), line(jY+1))
|
||||||
|
|||||||
Reference in New Issue
Block a user