Rewrote stiles

Added a new ContentAPI function, animationCycles, that returns the exact number of cycles an animation lasts for (useful for forced movement)
Added a new function to Vector objects that allows convertion into Direction objects (useful for transforming locations)
This commit is contained in:
Ceikry
2023-09-04 06:46:10 +00:00
committed by Ryan
parent d4e62c0e96
commit 895c41756a
7 changed files with 177 additions and 109 deletions
+22
View File
@@ -5,6 +5,8 @@ import content.global.skill.slayer.Master
import content.global.skill.slayer.SlayerManager
import content.global.skill.slayer.Tasks
import core.game.node.item.Item
import core.api.utils.Vector
import core.game.world.map.Direction
import org.json.simple.JSONObject
import org.json.simple.parser.JSONParser
import org.junit.jupiter.api.Assertions
@@ -348,4 +350,24 @@ class APITests {
}
}
}
@Test fun vectorToDirectionShouldReturnExpectedDirections() {
val testData = arrayOf(
Pair(Vector(1.0, 0.0), Direction.EAST),
Pair(Vector(-1.0, 0.0), Direction.WEST),
Pair(Vector(0.0, 1.0), Direction.NORTH),
Pair(Vector(0.0, -1.0), Direction.SOUTH),
Pair(Vector(1.0, 1.0), Direction.NORTH_EAST),
Pair(Vector(1.0, -1.0), Direction.SOUTH_EAST),
Pair(Vector(-1.0, 1.0), Direction.NORTH_WEST),
Pair(Vector(-1.0, -1.0), Direction.SOUTH_WEST),
Pair(Vector(15.0, 0.0), Direction.EAST),
Pair(Vector(15.0, 1.0), Direction.EAST),
Pair(Vector(-15.0, -9.7), Direction.SOUTH_WEST)
)
for ((vec, expDir) in testData) {
Assertions.assertEquals(expDir, vec.toDirection(), "Vector: $vec")
}
}
}
@@ -0,0 +1,46 @@
package content.skill.agility
import content.global.skill.agility.shortcuts.StileShortcut
import core.game.world.map.Direction
import core.game.world.map.Location
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
class ShortcutTests {
@Test fun stileGetInteractionLocShouldReturnCorrectLoc() {
data class StileTestData (val playerLoc: Location, val expectedLoc: Location, val stileLoc: Location, val stileOrientation: StileShortcut.Orientation)
val testData = arrayOf(
//Horizontal
StileTestData(Location.create(3044, 3308, 0), Location.create(3045, 3305, 0), Location.create(3043, 3305, 0), StileShortcut.Orientation.Horizontal),
StileTestData(Location.create(3048, 3303, 0), Location.create(3045, 3305, 0), Location.create(3043, 3305, 0), StileShortcut.Orientation.Horizontal),
StileTestData(Location.create(3043, 3307, 0), Location.create(3042, 3305, 0), Location.create(3043, 3305, 0), StileShortcut.Orientation.Horizontal),
StileTestData(Location.create(3039, 3301, 0), Location.create(3042, 3305, 0), Location.create(3043, 3305, 0), StileShortcut.Orientation.Horizontal),
//Vertical
StileTestData(Location.create(3203, 3276, 0), Location.create(3197, 3275, 0), Location.create(3197, 3276, 0), StileShortcut.Orientation.Vertical),
StileTestData(Location.create(3195, 3274, 0), Location.create(3197, 3275, 0), Location.create(3197, 3276, 0), StileShortcut.Orientation.Vertical),
StileTestData(Location.create(3191, 3280, 0), Location.create(3197, 3278, 0), Location.create(3197, 3276, 0), StileShortcut.Orientation.Vertical),
StileTestData(Location.create(3206, 3281, 0), Location.create(3197, 3278, 0), Location.create(3197, 3276, 0), StileShortcut.Orientation.Vertical)
)
for ((pLoc, expLoc, sLoc, ori) in testData) {
Assertions.assertEquals(expLoc, StileShortcut.getInteractLocation(pLoc, sLoc, ori))
}
}
@Test fun stileGetOrientationShouldReturnCorrectOrientation() {
val testData = arrayOf(
Pair (Direction.NORTH, StileShortcut.Orientation.Vertical),
Pair (Direction.SOUTH, StileShortcut.Orientation.Vertical),
Pair (Direction.NORTH_WEST, StileShortcut.Orientation.Vertical),
Pair (Direction.NORTH_EAST, StileShortcut.Orientation.Vertical),
Pair (Direction.SOUTH_EAST, StileShortcut.Orientation.Vertical),
Pair (Direction.SOUTH_WEST, StileShortcut.Orientation.Vertical),
Pair (Direction.EAST, StileShortcut.Orientation.Horizontal),
Pair (Direction.WEST, StileShortcut.Orientation.Horizontal)
)
for ((dir, expOri) in testData) {
Assertions.assertEquals(expOri, StileShortcut.getOrientation(dir))
}
}
}