| 142 | } |
| 143 | |
| 144 | void mainmenu_loop() |
| 145 | { |
| 146 | bool done; |
| 147 | |
| 148 | RefreshMusic(); |
| 149 | done = false; |
| 150 | |
| 151 | do { |
| 152 | _mainmenu_selections menu = MAINMENU_NONE; |
| 153 | if (demo::IsRunning()) |
| 154 | menu = MAINMENU_SINGLE_PLAYER; |
| 155 | else if (!UiMainMenuDialog(gszProductName, &menu, 30)) |
| 156 | app_fatal(_("Unable to display mainmenu")); |
| 157 | |
| 158 | switch (menu) { |
| 159 | case MAINMENU_NONE: |
| 160 | break; |
| 161 | case MAINMENU_SINGLE_PLAYER: |
| 162 | if (!InitSinglePlayerMenu()) |
| 163 | done = true; |
| 164 | break; |
| 165 | case MAINMENU_MULTIPLAYER: |
| 166 | if (!InitMultiPlayerMenu()) |
| 167 | done = true; |
| 168 | break; |
| 169 | case MAINMENU_ATTRACT_MODE: |
| 170 | if (gbIsSpawn && !HaveDiabdat()) |
| 171 | done = false; |
| 172 | else if (gbActive) |
| 173 | PlayIntro(); |
| 174 | break; |
| 175 | case MAINMENU_SHOW_CREDITS: |
| 176 | UiCreditsDialog(); |
| 177 | break; |
| 178 | case MAINMENU_SHOW_SUPPORT: |
| 179 | UiSupportDialog(); |
| 180 | break; |
| 181 | case MAINMENU_EXIT_DIABLO: |
| 182 | mainmenu_wait_for_button_sound(); |
| 183 | done = true; |
| 184 | break; |
| 185 | case MAINMENU_SETTINGS: |
| 186 | UiSettingsMenu(); |
| 187 | break; |
| 188 | } |
| 189 | } while (!done); |
| 190 | |
| 191 | music_stop(); |
| 192 | } |
| 193 | |
| 194 | } // namespace devilution |
no test coverage detected