Newer
Older
kotlin-use-kudens-js-lib / src / games / perses / shooter / Shooter.kt
rnentjes on 21 Jan 2017 1 KB Inital commit
package games.perses.shooter

import com.persesgames.game.Game
import com.persesgames.game.Screen
import com.persesgames.game.DrawMode
import com.persesgames.input.EmptyInputProcessor
import com.persesgames.texture.Textures
import com.persesgames.sprite.SpriteBatch
import com.persesgames.sprite.Sprite
import com.persesgames.input.Keys
import com.persesgames.sound.Sounds
import com.persesgames.text.Texts
import com.persesgames.sound.Music

import org.w3c.dom.HTMLAudioElement

/**
 * User: rnentjes
 * Date: 21-1-17
 * Time: 14:16
 */

class GameInputProcessor : EmptyInputProcessor() {

    override fun keyPressed(charCode: Int) {
        println("charCode: $charCode")
        if (charCode == 32) {
            Sounds.play("EXPLOSION", 0.5f)
        } else if (charCode == 'x'.toInt()) {
            Sounds.play("DROP", 0.75f)
        }
    }

    override fun pointerClick(pointer: Int, x: Float, y: Float) {
        println("POINTER $pointer -> ($x, $y)")
    }
}

class WelcomeScreen : Screen() {
    var sprites = SpriteBatch()

    var sprite = Sprite("SHIP")
    var music: HTMLAudioElement? = null
    var time: Float = 0f

    override fun loadResources() {
        music = Music.play("music/DST-TacticalSpace.mp3", 1.0, looping = true)

        Textures.load("SHIP", "images/ship2.png")
        //Textures.loadSpriteSheet("images/data-0.json")

        Keys.setInputProcessor(GameInputProcessor())
    }

    override fun update(time: Float, delta: Float) {
        this.time = time
    }

    override fun render() {
        Texts.drawText(20f, 100f, "Hello! FPS ${Game.fps}", font = "bold 72pt Arial")

        sprites.draw(sprite, 350f, 350f, scale = 1f, rotation = -time)
        sprites.render()
    }
}

fun main(args: Array<String>) {
    Game.view.setToHeight(1000f)
    Game.view.drawMode = DrawMode.LINEAR

    Game.view.minAspectRatio = 0.8f
    Game.view.maxAspectRatio = 0.8f

    Game.start(WelcomeScreen())
}