another failed experiment

This commit is contained in:
minjaesong
2023-09-05 13:45:02 +09:00
parent 8fa9ddeec1
commit 699cc4dd74
2 changed files with 22 additions and 7 deletions

View File

@@ -18,12 +18,12 @@
"cumulonimbus": { "cumulonimbus": {
"filename": "cloud_large.png", "tw": 2048, "th": 1024, "probability": 0.4, "filename": "cloud_large.png", "tw": 2048, "th": 1024, "probability": 0.4,
"baseScale": 4.0, "scaleVariance": 0.3333333, "baseScale": 4.0, "scaleVariance": 0.3333333,
"altLow": 590, "altHigh":60 "altLow": 1080, "altHigh":1800
}, },
"nimbostratus": { "nimbostratus": {
"filename": "cloud_wide.png", "tw": 4096, "th": 1024, "probability": 1.0, "filename": "cloud_wide.png", "tw": 4096, "th": 1024, "probability": 1.0,
"baseScale": 8.0, "scaleVariance": 0.1, "baseScale": 8.0, "scaleVariance": 0.1,
"altLow": 600, "altHigh": 700 "altLow": 1100, "altHigh": 1500
} }
}, },
"atmoTurbidity": 9.5 "atmoTurbidity": 9.5

View File

@@ -1108,6 +1108,7 @@ open class ActorWithBody : Actor {
} }
private fun Hitbox.getWallDetection(option: Int): List<Double> { private fun Hitbox.getWallDetection(option: Int): List<Double> {
val SOME_PIXEL = 1.0 // it really does NOT work if the value is not 1.0
val x1: Double val x1: Double
val x2: Double val x2: Double
val y1: Double val y1: Double
@@ -1116,23 +1117,23 @@ open class ActorWithBody : Actor {
COLLIDING_TOP -> { COLLIDING_TOP -> {
x1 = this.startX x1 = this.startX
x2 = this.endX - PHYS_EPSILON_DIST x2 = this.endX - PHYS_EPSILON_DIST
y1 = this.startY - A_PIXEL y1 = this.startY - SOME_PIXEL
y2 = y1 y2 = y1
} }
COLLIDING_BOTTOM -> { COLLIDING_BOTTOM -> {
x1 = this.startX x1 = this.startX
x2 = this.endX - PHYS_EPSILON_DIST x2 = this.endX - PHYS_EPSILON_DIST
y1 = this.endY - PHYS_EPSILON_DIST + A_PIXEL y1 = this.endY - PHYS_EPSILON_DIST + SOME_PIXEL
y2 = y1 y2 = y1
} }
COLLIDING_LEFT -> { COLLIDING_LEFT -> {
x1 = this.startX - A_PIXEL x1 = this.startX - SOME_PIXEL
x2 = x1 x2 = x1
y1 = this.startY y1 = this.startY
y2 = this.endY - PHYS_EPSILON_DIST y2 = this.endY - PHYS_EPSILON_DIST
} }
COLLIDING_RIGHT -> { COLLIDING_RIGHT -> {
x1 = this.endX - PHYS_EPSILON_DIST + A_PIXEL x1 = this.endX - PHYS_EPSILON_DIST + SOME_PIXEL
x2 = x1 x2 = x1
y1 = this.startY y1 = this.startY
y2 = this.endY - PHYS_EPSILON_DIST y2 = this.endY - PHYS_EPSILON_DIST
@@ -1242,6 +1243,8 @@ open class ActorWithBody : Actor {
private fun isCollidingInternalStairs(pxStart: Int, pyStart: Int, pxEnd: Int, pyEnd: Int, feet: Boolean = false): Pair<Int, Int> { private fun isCollidingInternalStairs(pxStart: Int, pyStart: Int, pxEnd: Int, pyEnd: Int, feet: Boolean = false): Pair<Int, Int> {
if (world == null) return 0 to 0 if (world == null) return 0 to 0
val cornerSize = minOf((pyEnd - pyStart) / 3, (pxEnd - pyStart) / 3)
val ys = if (gravitation.y >= 0) pyEnd downTo pyStart else pyStart..pyEnd val ys = if (gravitation.y >= 0) pyEnd downTo pyStart else pyStart..pyEnd
val yheight = (ys.last - ys.first).absoluteValue val yheight = (ys.last - ys.first).absoluteValue
var stairHeight = 0 var stairHeight = 0
@@ -1260,7 +1263,19 @@ open class ActorWithBody : Actor {
val isFeetTileHeight = (ty == feetY) val isFeetTileHeight = (ty == feetY)
var hasFloor = false var hasFloor = false
for (x in pxStart..pxEnd) { // octagonal shape
val xs = /*if (y < cornerSize) {
val sub = cornerSize - y
(pxStart + sub)..(pxEnd - sub)
}
else if (y > pyEnd - cornerSize) {
val sub = y - (pyEnd - cornerSize)
(pxStart + sub)..(pxEnd - sub)
}
else*/
pxStart..pxEnd
for (x in xs) {
val tx = (x / TILE_SIZED).floorToInt() // round down toward negative infinity val tx = (x / TILE_SIZED).floorToInt() // round down toward negative infinity
val tile = world!!.getTileFromTerrain(tx, ty) val tile = world!!.getTileFromTerrain(tx, ty)