Skip to content

Commit af20958

Browse files
committed
CATROID-1623 Refactor GlideToAction to Kotlin (small adjustments)
1 parent 66d5736 commit af20958

File tree

2 files changed

+56
-3
lines changed

2 files changed

+56
-3
lines changed

catroid/src/main/java/org/catrobat/catroid/content/actions/conditional/GlideToAction.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ open class GlideToAction : TemporalAction() {
3939
lateinit var scope: Scope
4040

4141

42-
private var durationValue = 0f
42+
var durationValue = 0f
4343
private var endXValue = 0f
4444
private var endYValue = 0f
4545

@@ -82,9 +82,11 @@ open class GlideToAction : TemporalAction() {
8282
override fun update(percent: Float) {
8383
val deltaX = scope.sprite.look.xInUserInterfaceDimensionUnit - currentXValue
8484
val deltaY = scope.sprite.look.yInUserInterfaceDimensionUnit - currentYValue
85-
if ((-0.1f > deltaX || deltaX > 0.1f) || (-0.1f > deltaY || deltaY > 0.1f)) {
85+
if ((kotlin.math.abs(deltaX) > 0.1f) || (kotlin.math.abs(deltaY) > 0.1f)) {
8686
restart = true
87-
setDuration(getDuration() - time)
87+
val remainingDuration = getDuration() - time
88+
setDuration(remainingDuration)
89+
durationValue = remainingDuration
8890
restart()
8991
} else {
9092
currentXValue = startXValue + (endXValue - startXValue) * percent

catroid/src/test/java/org/catrobat/catroid/test/content/actions/GlideToActionTest.kt

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.badlogic.gdx.scenes.scene2d.actions.SequenceAction
2626
import org.junit.Assert.assertEquals
2727
import org.catrobat.catroid.content.ActionFactory
2828
import org.catrobat.catroid.content.Sprite
29+
import org.catrobat.catroid.content.actions.conditional.GlideToAction
2930
import org.catrobat.catroid.formulaeditor.Formula
3031
import org.catrobat.catroid.test.StaticSingletonInitializer.Companion.initializeStaticSingletonMethods
3132
import org.junit.Before
@@ -58,6 +59,34 @@ class GlideToActionTest {
5859
assertEquals(Y_POSITION, sprite.look.yInUserInterfaceDimensionUnit)
5960
}
6061

62+
@Test
63+
fun testGlideToBoundaryPositionsImmediate() {
64+
val glideToMax = sprite.actionFactory.createGlideToAction(
65+
sprite,
66+
SequenceAction(),
67+
Formula(Int.MAX_VALUE),
68+
Formula(Int.MAX_VALUE),
69+
Formula(0f)
70+
)
71+
runActionUntilFinished(glideToMax)
72+
73+
assertEquals(Int.MAX_VALUE.toFloat(), sprite.look.xInUserInterfaceDimensionUnit)
74+
assertEquals(Int.MAX_VALUE.toFloat(), sprite.look.yInUserInterfaceDimensionUnit)
75+
76+
val glideToMin = sprite.actionFactory.createGlideToAction(
77+
sprite,
78+
SequenceAction(),
79+
Formula(Int.MIN_VALUE),
80+
Formula(Int.MIN_VALUE),
81+
Formula(0f)
82+
)
83+
runActionUntilFinished(glideToMin)
84+
85+
assertEquals(Int.MIN_VALUE.toFloat(), sprite.look.xInUserInterfaceDimensionUnit)
86+
assertEquals(Int.MIN_VALUE.toFloat(), sprite.look.yInUserInterfaceDimensionUnit)
87+
}
88+
89+
6190
@Test(expected = NullPointerException::class)
6291
fun testNullActor() {
6392
val xPosition = Formula(X_POSITION)
@@ -120,6 +149,28 @@ class GlideToActionTest {
120149
assertEquals(0f, sprite.look.yInUserInterfaceDimensionUnit)
121150
}
122151

152+
@Test
153+
fun testDurationChangesAfterRestart() {
154+
val xPosition = Formula(X_POSITION)
155+
val yPosition = Formula(Y_POSITION)
156+
val duration = Formula(DURATION)
157+
158+
sprite.look.setPositionInUserInterfaceDimensionUnit(0f, 0f)
159+
160+
val action = sprite.actionFactory.createGlideToAction(sprite, SequenceAction(), xPosition, yPosition, duration
161+
) as GlideToAction
162+
163+
action.act(0f)
164+
val durationBefore = action.durationValue
165+
166+
sprite.look.setPositionInUserInterfaceDimensionUnit(10f, 10f)
167+
168+
action.act(0.5f)
169+
val durationAfter = action.durationValue
170+
171+
assert(durationAfter < durationBefore)
172+
}
173+
123174
private fun runActionUntilFinished(action: com.badlogic.gdx.scenes.scene2d.Action) {
124175
while (!action.act(1.0f)) {
125176
// does nothing

0 commit comments

Comments
 (0)