Browse Source

Clean up music track selection

pull/4561/head
Anders Jenbo 4 years ago
parent
commit
9d082389d8
  1. 2
      Source/diablo.cpp
  2. 4
      Source/gamemenu.cpp
  3. 38
      Source/menu.cpp
  4. 24
      Source/sound.cpp
  5. 2
      Source/sound.h

2
Source/diablo.cpp

@ -2044,7 +2044,7 @@ void DisableInputWndProc(uint32_t uMsg, int32_t /*wParam*/, int32_t lParam)
void LoadGameLevel(bool firstflag, lvl_entry lvldir)
{
_music_id neededTrack = static_cast<_music_id>(leveltype);
_music_id neededTrack = GetLevelMusic(leveltype);
if (neededTrack != sgnMusicTrack)
music_stop();

4
Source/gamemenu.cpp

@ -193,7 +193,7 @@ void GamemenuMusicVolume(bool bActivate)
} else {
gbMusicOn = true;
sound_get_or_set_music_volume(VOLUME_MAX);
music_start((_music_id)leveltype);
music_start(GetLevelMusic(leveltype));
}
} else {
int volume = GamemenuSliderMusicSound(&sgOptionsMenu[0]);
@ -205,7 +205,7 @@ void GamemenuMusicVolume(bool bActivate)
}
} else if (!gbMusicOn) {
gbMusicOn = true;
music_start((_music_id)leveltype);
music_start(GetLevelMusic(leveltype));
}
}

38
Source/menu.cpp

@ -20,27 +20,31 @@ uint32_t gSaveNumber;
namespace {
/** The active music track id for the main menu. */
_music_id menu_music_track_id = TMUSIC_INTRO;
void RefreshMusic()
_music_id NextTrack()
{
music_start(menu_music_track_id);
if (gbIsSpawn) {
return TMUSIC_INTRO;
}
if (gbIsSpawn && !gbIsHellfire) {
return;
switch (sgnMusicTrack) {
case TMUSIC_INTRO:
return TMUSIC_CATACOMBS;
case TMUSIC_CATACOMBS:
return TMUSIC_CAVES;
case TMUSIC_CAVES:
return TMUSIC_HELL;
case TMUSIC_HELL:
return TMUSIC_NEST;
case TMUSIC_NEST:
return TMUSIC_CRYPT;
default:
return TMUSIC_INTRO;
}
}
int nextTrack = (int)menu_music_track_id;
do {
nextTrack++;
if (nextTrack == NUM_MUSIC || (!gbIsHellfire && nextTrack > TMUSIC_HELL))
nextTrack = TMUSIC_CATACOMBS;
if (gbIsSpawn && nextTrack > TMUSIC_CATHEDRAL)
nextTrack = TMUSIC_NEST;
} while (nextTrack == TMUSIC_TOWN || nextTrack == TMUSIC_CATHEDRAL);
menu_music_track_id = (_music_id)nextTrack;
void RefreshMusic()
{
music_start(NextTrack());
}
bool InitMenu(_selhero_selections type)

24
Source/sound.cpp

@ -222,6 +222,28 @@ void snd_deinit()
gbSndInited = false;
}
_music_id GetLevelMusic(dungeon_type dungeonType)
{
switch (dungeonType) {
case DTYPE_TOWN:
return TMUSIC_TOWN;
case DTYPE_CATHEDRAL:
return TMUSIC_CATHEDRAL;
case DTYPE_CATACOMBS:
return TMUSIC_CATACOMBS;
case DTYPE_CAVES:
return TMUSIC_CAVES;
case DTYPE_HELL:
return TMUSIC_HELL;
case DTYPE_NEST:
return TMUSIC_NEST;
case DTYPE_CRYPT:
return TMUSIC_CRYPT;
default:
return TMUSIC_INTRO;
}
}
void music_stop()
{
music.Release();
@ -260,7 +282,7 @@ void music_start(_music_id nTrack)
return;
}
sgnMusicTrack = (_music_id)nTrack;
sgnMusicTrack = nTrack;
}
void sound_disable_music(bool disable)

2
Source/sound.h

@ -9,6 +9,7 @@
#include <memory>
#include <string>
#include "gendung.h"
#include "miniwin/miniwin.h"
#ifndef NOSOUND
@ -58,6 +59,7 @@ void snd_play_snd(TSnd *pSnd, int lVolume, int lPan);
std::unique_ptr<TSnd> sound_file_load(const char *path, bool stream = false);
void snd_init();
void snd_deinit();
_music_id GetLevelMusic(dungeon_type dungeonType);
void music_stop();
void music_start(_music_id nTrack);
void sound_disable_music(bool disable);

Loading…
Cancel
Save