Merge remote-tracking branch 'origin/main' into main

imgbot
MehdiAyadi 1 year ago
commit 19ce04bf1d

@ -21,6 +21,8 @@ import com.last.commit.config.GameConfig
import com.last.commit.map.Interactable
import com.last.commit.map.TimeMap
import com.last.commit.stages.InventoryStage
import com.last.commit.audio.GameSoundEffect
import com.last.commit.audio.GameMusic
import kotlin.math.floor
/** First screen of the application. Displayed after the application is created. */
@ -59,6 +61,7 @@ class FirstScreen(val gameState: GameState) : Screen, InputProcessor {
shapeRenderer.setAutoShapeType(true)
Gdx.input.setInputProcessor(this)
gameState.soundEngine.play(GameMusic.WORLD_MUSIC, 0.5f)
}
fun loadGameConfig(): GameConfig {

@ -4,6 +4,7 @@ import GameState
import com.badlogic.gdx.Game
import com.last.commit.config.GameSettings
import com.last.commit.inventory.Inventory
import com.last.commit.audio.SoundEngine
/** [com.badlogic.gdx.ApplicationListener] implementation shared by all platforms. */
class Game : Game() {
@ -18,7 +19,8 @@ class Game : Game() {
fun createState() {
state = GameState(
Inventory(),
GameSettings()
GameSettings(),
SoundEngine()
)
}
}

@ -1,7 +1,9 @@
import com.last.commit.inventory.Inventory
import com.last.commit.config.GameSettings
import com.last.commit.audio.SoundEngine
data class GameState(
val inventory: Inventory,
val settings: GameSettings,
public val soundEngine: SoundEngine,
)

@ -5,6 +5,7 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion
import com.badlogic.gdx.math.Rectangle
import com.badlogic.gdx.math.Vector2
import com.last.commit.inventory.Inventory
import com.last.commit.audio.GameSoundEffect
import GameState

@ -0,0 +1,9 @@
package com.last.commit.audio
import com.last.commit.audio.GameSound
class GameMusic(name: String): GameSound(name) {
companion object {
val WORLD_MUSIC = GameMusic("world_music.mp3")
}
}

@ -0,0 +1,5 @@
package com.last.commit.audio;
public abstract class GameSound(public val name: String) {
}

@ -0,0 +1,9 @@
package com.last.commit.audio;
import com.last.commit.audio.GameSound
public class GameSoundEffect(name: String): GameSound(name) {
companion object {
val STEPS_INDOOR = GameSoundEffect("steps_indoor.mp3");
}
}

@ -0,0 +1,54 @@
package com.last.commit.audio;
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.audio.Sound
import com.badlogic.gdx.audio.Music
import com.last.commit.audio.GameSound
import com.last.commit.audio.GameMusic
public class SoundEngine {
private val sounds: HashMap<String, Sound> = HashMap()
private val musicTracks: HashMap<String, Music> = HashMap()
public fun play(gameSound: GameSound, volume: Float = 1f) {
if (gameSound is GameSoundEffect) {
val sound = loadEffect(gameSound.name)
sound.play(volume)
println("Playing sound ${gameSound.name}")
} else if (gameSound is GameMusic) {
val music = loadMusic(gameSound.name)
music.stop()
music.volume = volume
music.setLooping(true)
music.play()
}
}
private fun loadEffect(name: String): Sound {
return loadSound("effects/$name")
}
private fun loadMusic(name: String): Music {
var music = musicTracks.get(name)
if (music == null) {
println("Loading sound $name")
music = Gdx.audio.newMusic(Gdx.files.internal("sounds/music/$name"))
musicTracks[name] = music
}
return music!!
}
private fun loadSound(name: String): Sound {
var sound = sounds.get(name)
if (sound == null) {
println("Loading sound $name")
sound = Gdx.audio.newSound(Gdx.files.internal("sounds/$name"))
sounds[name] = sound
}
return sound!!
}
}
Loading…
Cancel
Save