git repos / saland

commit 3b4cb6f3

Poul Sander · 2026-07-31 17:17
3b4cb6f382a65b9bf0d37f3120070f8917846096 patch · browse files
parent 7fc643d7aaeb3835212cb3eb1f1750e2d36e04a1

Add background music

Changed files

A data/music/AUTH
A data/music/forest.ogg
M data/sounds/AUTH before
A data/sounds/qubodupPunch/qubodupPunch05.ogg
M src/saland.cpp before
M src/saland/globals.hpp before
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;