Exit Full View

Cavern Quest 2 / src / commonMain / kotlin / Ship.kt

import uk.co.nickthecoder.kyd.Actor
import uk.co.nickthecoder.kyd.Management
import uk.co.nickthecoder.kyd.Ticks
import uk.co.nickthecoder.kyd.appearance.flipBook
import uk.co.nickthecoder.kyd.appearance.flipBookAnimation
import uk.co.nickthecoder.kyd.appearance.page
import uk.co.nickthecoder.kyd.util.Vector2

class Ship : Item() {

    override fun onEnteredStage(actor: Actor) {
        super.onEnteredStage(actor)
        val grid = PlayDirector.instance.grid
        // Prevent Player walking over the legs.
        grid[gridX - 1][gridY - 1] = actor
        grid[gridX + 1][gridY - 1] = actor
    }

    override fun tick(actor: Actor, seconds: Float) {
        (actor.appearance as? Ticks)?.tick(actor, seconds)
    }

    fun blastOff(myActor: Actor) {
        var speed = 10f
        flipBook {
            repetitions = 1
            page(null, 6f) {
                tick { actor, seconds ->
                    actor.position += Vector2(0f, speed * seconds)
                    speed += 3f
                }
            }
            onFinished {
                println("Congratulations")
                Management.instance.loadAct("/menu")
            }
        }.applyToActor(myActor)
    }

}