diff --git a/source/games/whaven/src/main.cpp b/source/games/whaven/src/main.cpp index 4712ed030..b717722b0 100644 --- a/source/games/whaven/src/main.cpp +++ b/source/games/whaven/src/main.cpp @@ -924,4 +924,11 @@ DEFINE_ACTION_FUNCTION(_Witchaven, GetViewPlayer) { ACTION_RETURN_POINTER(&player[myconnectindex]); } + +DEFINE_ACTION_FUNCTION_NATIVE(_Witchaven, PlayMenuMusic, SND_MenuMusic) +{ + SND_MenuMusic(); + return 0; +} + END_WH_NS diff --git a/source/games/whaven/src/music.cpp b/source/games/whaven/src/music.cpp index 145d85e17..076ef1e22 100644 --- a/source/games/whaven/src/music.cpp +++ b/source/games/whaven/src/music.cpp @@ -45,7 +45,7 @@ void startsong(int which) // 0, 1, 2 or 3 void startmusic(int level) { // allow music override from MAPINFO. - if (currentLevel->music.IsNotEmpty()) + if (currentLevel && currentLevel->music.IsNotEmpty()) { Mus_Play(currentLevel->music, true); oldsong = -1; diff --git a/source/games/whaven/src/wh.h b/source/games/whaven/src/wh.h index aa6e1e99a..fdb949156 100644 --- a/source/games/whaven/src/wh.h +++ b/source/games/whaven/src/wh.h @@ -491,6 +491,7 @@ inline int spritesound(int sn, DWHActor* s, int loop = 0, int channel = CHAN_AUT void startmusic(int); void startsong(int); void setupmidi(); +void SND_MenuMusic(); extern int attacktheme; @@ -517,6 +518,7 @@ struct GameInterface : public ::GameInterface bool GenerateSavePic() override; GameStats getStats() override; void MenuOpened() override; + //void MenuClosed() override; void MenuSound(EMenuSounds snd) override; bool CanSave() override; void LoadGameTextures() override; diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 29aea8b53..6b3cac991 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -89,6 +89,7 @@ LISTMENU "MainMenu" } ifgame(Witchaven2) { + class "WH2MainMenu" position 160, 35 Linespacing 22 WH2TextItem "$MNU_NEWGAME", "n", "SkillMenu" diff --git a/wadsrc/static/zscript/games/wh/ui/menu_wh1.zs b/wadsrc/static/zscript/games/wh/ui/menu_wh1.zs index c0b7ad406..26d88ae0d 100644 --- a/wadsrc/static/zscript/games/wh/ui/menu_wh1.zs +++ b/wadsrc/static/zscript/games/wh/ui/menu_wh1.zs @@ -33,6 +33,12 @@ class WHMenuDelegate : RazeMenuDelegate class WHMainMenu : ListMenu { + override void Init(Menu parent, ListMenuDescriptor desc) + { + Super.Init(parent, desc); + Witchaven.PlayMenuMusic(); + } + } //============================================================================= diff --git a/wadsrc/static/zscript/games/wh/ui/menu_wh2.zs b/wadsrc/static/zscript/games/wh/ui/menu_wh2.zs index b6720f5cd..0f0521dac 100644 --- a/wadsrc/static/zscript/games/wh/ui/menu_wh2.zs +++ b/wadsrc/static/zscript/games/wh/ui/menu_wh2.zs @@ -31,6 +31,17 @@ class WH2MenuDelegate : RazeMenuDelegate } +class WH2MainMenu : ListMenu +{ + override void Init(Menu parent, ListMenuDescriptor desc) + { + Super.Init(parent, desc); + Witchaven.PlayMenuMusic(); + } + +} + + //============================================================================= // // text item diff --git a/wadsrc/static/zscript/games/wh/whgame.zs b/wadsrc/static/zscript/games/wh/whgame.zs index 776f7b27b..a4f7eb030 100644 --- a/wadsrc/static/zscript/games/wh/whgame.zs +++ b/wadsrc/static/zscript/games/wh/whgame.zs @@ -208,6 +208,7 @@ struct Witchaven native native static void PlaySound(int s); native static WhPlayer GetViewPlayer(); + native static void PlayMenuMusic(); } struct WhWeaponInf native {