mirror of
https://github.com/yairm210/Unciv.git
synced 2025-03-09 20:29:50 +07:00
Can now download background music for the game through the Options menu =D
This commit is contained in:
parent
f4c20792ae
commit
9dee9f8256
BIN
android/assets/sounds/thatched-villagers.mp3
Normal file
BIN
android/assets/sounds/thatched-villagers.mp3
Normal file
Binary file not shown.
@ -4,6 +4,7 @@ import com.badlogic.gdx.Application
|
||||
import com.badlogic.gdx.Game
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.Input
|
||||
import com.badlogic.gdx.audio.Music
|
||||
import com.unciv.logic.GameInfo
|
||||
import com.unciv.logic.GameSaver
|
||||
import com.unciv.logic.GameStarter
|
||||
@ -30,8 +31,13 @@ class UnCivGame(val version: String) : Game() {
|
||||
|
||||
lateinit var worldScreen: WorldScreen
|
||||
|
||||
var music : Music? =null
|
||||
val musicLocation = "music/thatched-villagers.mp3"
|
||||
|
||||
override fun create() {
|
||||
Current = this
|
||||
|
||||
|
||||
if(Gdx.app.type!= Application.ApplicationType.Desktop)
|
||||
viewEntireMapForDebug=false
|
||||
Gdx.input.setCatchKey(Input.Keys.BACK, true)
|
||||
@ -49,6 +55,19 @@ class UnCivGame(val version: String) : Game() {
|
||||
}
|
||||
}
|
||||
else setScreen(LanguagePickerScreen())
|
||||
|
||||
startMusic()
|
||||
}
|
||||
|
||||
fun startMusic(){
|
||||
|
||||
val musicFile = Gdx.files.local(musicLocation)
|
||||
if(musicFile.exists()){
|
||||
music = Gdx.audio.newMusic(musicFile)
|
||||
music!!.isLooping=true
|
||||
music!!.volume = 0.4f
|
||||
music!!.play()
|
||||
}
|
||||
}
|
||||
|
||||
fun setScreen(screen: CameraStageBaseScreen) {
|
||||
|
@ -12,6 +12,7 @@ class GameSettings {
|
||||
var tutorialsShown = ArrayList<String>()
|
||||
var hasCrashedRecently = false
|
||||
var soundEffectsVolume = 0.5f
|
||||
var musicVolume = 0.5f
|
||||
var turnsBetweenAutosaves = 1
|
||||
var tileSet:String = "FantasyHex"
|
||||
var showTutorials: Boolean = true
|
||||
|
@ -113,7 +113,7 @@ class MapDownloadTable(mapEditorScreen: MapEditorScreen):PopupTable(mapEditorScr
|
||||
for (downloadableMap in folderList.entries) {
|
||||
val downloadMapButton = TextButton(downloadableMap.name, CameraStageBaseScreen.skin)
|
||||
downloadMapButton.onClick {
|
||||
val mapJsonGzipped = DropBox().downloadFile(downloadableMap.path_display)
|
||||
val mapJsonGzipped = DropBox().downloadFileAsString(downloadableMap.path_display)
|
||||
if(mapJsonGzipped==""){
|
||||
val couldNotDownloadMapPopup = PopupTable(screen)
|
||||
couldNotDownloadMapPopup.addGoodSizedLabel("Could not download map!").row()
|
||||
|
@ -5,6 +5,7 @@ import com.unciv.logic.GameSaver
|
||||
import com.unciv.ui.saves.Gzip
|
||||
import java.io.BufferedReader
|
||||
import java.io.DataOutputStream
|
||||
import java.io.InputStream
|
||||
import java.io.InputStreamReader
|
||||
import java.net.HttpURLConnection
|
||||
import java.net.URL
|
||||
@ -12,7 +13,7 @@ import java.nio.charset.StandardCharsets
|
||||
|
||||
class DropBox(){
|
||||
|
||||
fun dropboxApi(url:String, data:String="",contentType:String="",dropboxApiArg:String=""):String {
|
||||
fun dropboxApi(url:String, data:String="",contentType:String="",dropboxApiArg:String=""): InputStream? {
|
||||
|
||||
with(URL(url).openConnection() as HttpURLConnection) {
|
||||
requestMethod = "POST" // default is GET
|
||||
@ -32,16 +33,12 @@ class DropBox(){
|
||||
outputStream.flush()
|
||||
}
|
||||
|
||||
val reader = BufferedReader(InputStreamReader(inputStream))
|
||||
val output = reader.readText()
|
||||
|
||||
println(output)
|
||||
return output
|
||||
return inputStream
|
||||
} catch (ex: Exception) {
|
||||
println(ex.message)
|
||||
val reader = BufferedReader(InputStreamReader(errorStream))
|
||||
println(reader.readText())
|
||||
return ""
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -52,20 +49,26 @@ class DropBox(){
|
||||
return GameSaver().json().fromJson(FolderList::class.java,response)
|
||||
}
|
||||
|
||||
fun downloadFile(fileName:String):String{
|
||||
fun downloadFile(fileName:String): InputStream {
|
||||
val response = dropboxApi("https://content.dropboxapi.com/2/files/download",
|
||||
contentType = "text/plain",dropboxApiArg = "{\"path\":\"$fileName\"}")
|
||||
return response
|
||||
return response!!
|
||||
}
|
||||
|
||||
fun downloadFileAsString(fileName:String): String {
|
||||
val inputStream = downloadFile(fileName)
|
||||
val text = BufferedReader(InputStreamReader(inputStream)).readText()
|
||||
return text
|
||||
}
|
||||
|
||||
fun uploadFile(fileName: String, data: String, overwrite:Boolean=false){
|
||||
val overwriteModeString = if(!overwrite) "" else ""","mode":{".tag":"overwrite"}"""
|
||||
val response = dropboxApi("https://content.dropboxapi.com/2/files/upload",
|
||||
dropboxApi("https://content.dropboxapi.com/2/files/upload",
|
||||
data,"application/octet-stream", """{"path":"$fileName"$overwriteModeString}""")
|
||||
}
|
||||
|
||||
fun deleteFile(fileName:String){
|
||||
val response = dropboxApi("https://api.dropboxapi.com/2/files/delete_v2",
|
||||
dropboxApi("https://api.dropboxapi.com/2/files/delete_v2",
|
||||
"{\"path\":\"$fileName\"}","application/json")
|
||||
}
|
||||
|
||||
@ -90,7 +93,7 @@ class OnlineMultiplayer(){
|
||||
}
|
||||
|
||||
fun tryDownloadGame(gameId: String): GameInfo {
|
||||
val zippedGameInfo = DropBox().downloadFile(getGameLocation(gameId))
|
||||
val zippedGameInfo = DropBox().downloadFileAsString(getGameLocation(gameId))
|
||||
return GameSaver().gameInfoFromString(Gzip.unzip(zippedGameInfo))
|
||||
}
|
||||
}
|
@ -1,10 +1,9 @@
|
||||
package com.unciv.ui.worldscreen.optionstable
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.scenes.scene2d.Actor
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Slider
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextField
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.*
|
||||
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener
|
||||
import com.badlogic.gdx.utils.Array
|
||||
import com.unciv.UnCivGame
|
||||
@ -113,6 +112,7 @@ class WorldScreenOptionsTable(val worldScreen:WorldScreen) : PopupTable(worldScr
|
||||
addTileSetSelectBox(innerTable)
|
||||
|
||||
addSoundEffectsVolumeSlider(innerTable)
|
||||
addMusicVolumeSlider(innerTable)
|
||||
|
||||
innerTable.add("Version".toLabel())
|
||||
innerTable.add(UnCivGame.Current.version.toLabel()).row()
|
||||
@ -160,6 +160,43 @@ class WorldScreenOptionsTable(val worldScreen:WorldScreen) : PopupTable(worldScr
|
||||
innerTable.add(soundEffectsVolumeSlider).row()
|
||||
}
|
||||
|
||||
private fun addMusicVolumeSlider(innerTable: PopupTable) {
|
||||
val musicLocation =Gdx.files.local(UnCivGame.Current.musicLocation)
|
||||
if(musicLocation.exists()) {
|
||||
innerTable.add("Music volume".tr())
|
||||
|
||||
val musicVolumeSlider = Slider(0f, 1.0f, 0.1f, false, skin)
|
||||
musicVolumeSlider.value = UnCivGame.Current.settings.soundEffectsVolume
|
||||
musicVolumeSlider.addListener(object : ChangeListener() {
|
||||
override fun changed(event: ChangeEvent?, actor: Actor?) {
|
||||
UnCivGame.Current.settings.musicVolume = musicVolumeSlider.value
|
||||
UnCivGame.Current.settings.save()
|
||||
UnCivGame.Current.music?.volume = 0.4f * musicVolumeSlider.value
|
||||
}
|
||||
})
|
||||
innerTable.add(musicVolumeSlider).row()
|
||||
}
|
||||
else{
|
||||
val downloadMusicButton = TextButton("Download music",CameraStageBaseScreen.skin)
|
||||
innerTable.add(downloadMusicButton).colspan(2).row()
|
||||
val errorTable = Table()
|
||||
innerTable.add(errorTable).colspan(2).row()
|
||||
|
||||
downloadMusicButton.onClick {
|
||||
try{
|
||||
val file = DropBox().downloadFile("/Music/thatched-villagers.mp3")
|
||||
musicLocation.write(file,false)
|
||||
update()
|
||||
UnCivGame.Current.startMusic()
|
||||
}
|
||||
catch (ex:Exception){
|
||||
errorTable.clear()
|
||||
errorTable.add("Could not download music!".toLabel().setFontColor(Color.RED))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun addResolutionSelectBox(innerTable: PopupTable) {
|
||||
innerTable.add("Resolution".toLabel())
|
||||
|
||||
|
@ -520,3 +520,7 @@ Sounds are from FreeSound.org and are either Creative Commons or Public Domain
|
||||
* [uzzi_full_single](https://freesound.org/people/Deganoth/sounds/348685/) By Deganoth as 'shot' for bullet attacks
|
||||
|
||||
|
||||
# Music
|
||||
The following music is from https://filmmusic.io
|
||||
"Thatched Villagers" by Kevin MacLeod (https://incompetech.com)
|
||||
License: CC BY (http://creativecommons.org/licenses/by/4.0/)
|
||||
|
Loading…
Reference in New Issue
Block a user