diff --git a/data/music/AUTH b/data/music/AUTH new file mode 100644 index 0000000..39e086f --- /dev/null +++ b/data/music/AUTH @@ -0,0 +1 @@ +forrest.ogg syncopika (https://opengameart.org/content/forest) (CC-BY-3.0 license) diff --git a/data/music/forest.ogg b/data/music/forest.ogg new file mode 100644 index 0000000..b1edf1b Binary files /dev/null and b/data/music/forest.ogg differ diff --git a/data/sounds/AUTH b/data/sounds/AUTH index 8da0fb9..78ea764 100644 --- a/data/sounds/AUTH +++ b/data/sounds/AUTH @@ -2,4 +2,5 @@ pop.ogg openarena-svn887:/sound/weapons/rocket/rockf1a.wav cameraclick.ogg openarean-svn887:/sound/misc/w_pkup.wav typing.ogg openarena-svn887:/sound/world/clack.wav - +/sound/qubodupPunch/ +qubodupPunch05.ogg qubodup (https://opengameart.org/content/punch) (CC0 license) diff --git a/data/sounds/qubodupPunch/qubodupPunch05.ogg b/data/sounds/qubodupPunch/qubodupPunch05.ogg new file mode 100644 index 0000000..ce0d4ff Binary files /dev/null and b/data/sounds/qubodupPunch/qubodupPunch05.ogg differ diff --git a/src/saland.cpp b/src/saland.cpp index ff9f9ce..092bf08 100644 --- a/src/saland.cpp +++ b/src/saland.cpp @@ -214,6 +214,8 @@ void UpdateMouseCoordinates(const SDL_Event& event, int& mousex, int& mousey) { } void ResetFullscreen(); +void playMusic(const std::string& name); +void stopMusic(); void RunGameState(sago::GameStateInterface& state ) { bool done = false; //We are done! @@ -293,7 +295,9 @@ void runStartGame() { globalData.player.race = "male"; } Game g; + playMusic("forest"); RunGameState(g); + stopMusic(); } void runEditor() { @@ -332,6 +336,18 @@ void runPlayerSelect() { } +void playMusic(const std::string& name) { + globalData.currentMusic = name; + if (!globalData.NoSound && globalData.SoundEnabled) { + Mix_PlayMusic(globalData.dataHolder->getMusicHandler(name).get(), -1); + } +} + +void stopMusic() { + globalData.currentMusic.clear(); + Mix_HaltMusic(); +} + void ResetFullscreen() { sago::SagoDataHolder& dataHolder = *globalData.dataHolder; Mix_HaltMusic(); //We need to reload all data in case the screen type changes. Music must be stopped before unload. @@ -345,6 +361,9 @@ void ResetFullscreen() { globalData.spriteHolder.reset(new sago::SagoSpriteHolder( dataHolder ) ); SDL_ShowCursor(SDL_ENABLE); //SDL_GetRendererOutputSize(globalData.screen, &globalData.xsize, &globalData.ysize); + if (!globalData.currentMusic.empty() && !globalData.NoSound && globalData.SoundEnabled) { + Mix_PlayMusic(dataHolder.getMusicHandler(globalData.currentMusic).get(), -1); + } } void toggleFullscreen() { diff --git a/src/saland/globals.hpp b/src/saland/globals.hpp index 3a109a9..d9bc2de 100644 --- a/src/saland/globals.hpp +++ b/src/saland/globals.hpp @@ -73,6 +73,8 @@ struct GlobalData { SpawnCommand pendingSpawnCommand; bool pendingSpawnLake = false; std::string pendingSpawnItem; // Item name to spawn at mouse position + + std::string currentMusic; // name of music track that should be playing ("" = none); used to resume after ResetFullscreen() }; extern GlobalData globalData;