You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gamejam-22/core/src/main/kotlin/com/last/commit/screen/LoadingScreen.kt

104 lines
3.5 KiB
Kotlin

package com.last.commit.screen
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.Screen
import com.badlogic.gdx.graphics.GL20
import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.GlyphLayout
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.last.commit.Game
import com.last.commit.TimeTravelAssetManager
class LoadingScreen(private val assetManager: TimeTravelAssetManager, private val game: Game) : Screen {
companion object {
private const val FONTS = 1
private const val TEXTURES = 2
private const val SKINS = 3
private const val MUSICS = 4
private const val SOUNDS = 5
private const val FINISHED = 6
}
private var currentLoadingStage = 0
private val layout = GlyphLayout()
private var currentText = ""
private val camera = OrthographicCamera()
// timer for exiting loading screen
private var countDown = 1f // 5 seconds of waiting before menu screen
private val batch = SpriteBatch()
init {
camera.setToOrtho(false, 800f, 600f)
}
override fun show() {}
override fun render(delta: Float) {
Gdx.gl.glClearColor(0f, 0f, 0.2f, 1f)
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
if (assetManager.update()) {
currentLoadingStage += 1
when (currentLoadingStage) {
TEXTURES -> {
currentText = "Loading textures"
assetManager.loadTextures()
}
SKINS -> {
currentText = "Loading skins"
assetManager.loadSkins()
}
MUSICS -> {
currentText = "Loading musics"
assetManager.loadMusics("sounds/music/world_music.mp3")
}
SOUNDS -> {
currentText = "Loading sounds"
assetManager.loadSounds(
"sounds/effects/steps/steps_indoor_1.mp3",
"sounds/effects/steps/steps_indoor_2.mp3",
"sounds/effects/steps/steps_indoor_3.mp3",
"sounds/effects/door_open.mp3",
"sounds/effects/door_close.mp3",
"sounds/effects/time_travel.mp3",
"sounds/effects/grab.mp3"
)
}
FINISHED -> currentText = "Finished"
else -> currentText = "Key no found"
}
if (currentLoadingStage > 5) {
countDown -= delta // timer to stay on loading screen for short preiod once done loading
currentLoadingStage =
5 // cap loading stage to 5 as will use later to display progress bar anbd more than 5 would go off the screen
if (countDown < 0) { // countdown is complete
// game.getAudioManager().load()
game.changeScreen(Screens.MAIN_MENU)
}
}
}
layout.setText(game.font, currentText)
camera.update()
batch.projectionMatrix = camera.combined
batch.begin()
game.font.draw(batch, currentText, 800 / 2 - layout.width / 2, layout.height + 10)
batch.end()
}
override fun resize(width: Int, height: Int) {}
override fun pause() {}
override fun resume() {}
override fun hide() {
assetManager.finishLoading()
}
override fun dispose() {}
}