void LoadSongs(void) { debug(D_NORMAL, "loading game music %s\n", CDOGS_GAME_MUSIC_DIR); LoadSongList(&gGameSongs, CDOGS_GAME_MUSIC_DIR); debug(D_NORMAL, "loading menu music %s\n", CDOGS_MENU_MUSIC_DIR); LoadSongList(&gMenuSongs, CDOGS_MENU_MUSIC_DIR); }
Program::Program() { Error = Osu.getError(); LoadSongList(); PlayingThread = new std::thread(Program::checkForPlaying, this); PlayManagerCloser = nullptr; }
//loads the specfied mission from the mission list. //BuildMissionList() must have been called. //Returns true if mission loaded ok, else false. int LoadMission (int nMission) { CFILE cf; char szFolder [FILENAME_LEN] = {'\0'}, szFile [FILENAME_LEN] = {'\0'}; int i, bFoundHogFile = 0; gameData.missions.nEnhancedMission = 0; if (nMission == gameData.missions.nD1BuiltinMission) { CFUseD1HogFile ("descent.hog"); switch (gameData.missions.nD1BuiltinHogSize) { default: Int3(); // fall through case D1_MISSION_HOGSIZE: case D1_10_MISSION_HOGSIZE: case D1_15_MISSION_HOGSIZE: case D1_3DFX_MISSION_HOGSIZE: case D1_MAC_MISSION_HOGSIZE: case D1_OEM_MISSION_HOGSIZE: case D1_OEM_10_MISSION_HOGSIZE: case D1_SHAREWARE_MISSION_HOGSIZE: case D1_SHAREWARE_10_MISSION_HOGSIZE: case D1_MAC_SHARE_MISSION_HOGSIZE: return load_mission_d1(nMission); break; } } if (nMission == gameData.missions.nBuiltinMission) { switch (gameData.missions.nBuiltinHogSize) { case SHAREWARE_MISSION_HOGSIZE: case MAC_SHARE_MISSION_HOGSIZE: return load_mission_shareware(nMission); break; case OEM_MISSION_HOGSIZE: return load_mission_oem(nMission); break; default: Int3(); // fall through case FULL_MISSION_HOGSIZE: case FULL_10_MISSION_HOGSIZE: case MAC_FULL_MISSION_HOGSIZE: // continue on... (use d2.mn2 from tHogFile) break; } } gameData.missions.nCurrentMission = nMission; #if TRACE con_printf (CON_VERBOSE, "Loading mission %d\n", nMission); #endif //read mission from file switch (gameData.missions.list [nMission].location) { case ML_MISSIONDIR: case ML_ALTHOGDIR: strcpy (szFolder, gameFolders.szMissionDirs [gameData.missions.list [nMission].location]); break; case ML_CDROM: sprintf (szFolder, "%s/", CDROM_dir); break; default: Int3(); //fall through case ML_CURDIR: *szFolder = '\0'; break; case ML_MSNROOTDIR: sprintf (szFolder, "%s%s", gameFolders.szMissionDir, *gameFolders.szMissionDir ? "/" : ""); break; case ML_DATADIR: sprintf (szFolder, "%s%s", gameFolders.szDataDir, *gameFolders.szDataDir ? "/" : ""); break; } sprintf (szFile, "%s%s", gameData.missions.list [nMission].filename, (gameData.missions.list [nMission].nDescentVersion == 2) ? ".mn2" : ".msn"); strlwr (szFile); if (!CFOpen (&cf, szFile, szFolder, "rb", 0)) { gameData.missions.nCurrentMission = -1; return 0; //error! } i = ParseMissionFile (&cf); CFClose(&cf); if (!i) { gameData.missions.nCurrentMission = -1; ExecMessageBox (TXT_ERROR, NULL, 1, TXT_OK, TXT_MSNFILE_ERROR); return 0; } //for non-builtin missions, load HOG CFUseAltHogFile (""); if (!strcmp (gameData.missions.list [nMission].filename, gameData.missions.szBuiltinMissionFilename)) bFoundHogFile = 1; else { sprintf (szFile, "%s%s.hog", szFolder, gameData.missions.list [nMission].filename); strlwr (szFile); bFoundHogFile = CFUseAltHogFile (szFile); if (bFoundHogFile) { // for Descent 1 missions, load descent.hog if ((gameData.missions.list [nMission].nDescentVersion == 1) && strcmp (gameData.missions.list [nMission].filename, "descent")) if (!CFUseD1HogFile ("descent.hog")) Warning (TXT_NO_HOG); } else { sprintf (szFile, "%s%s%s", szFolder, gameData.missions.list [nMission].filename, (gameData.missions.list [nMission].nDescentVersion == 2) ? ".rl2" : ".rdl"); strlwr (szFile); bFoundHogFile = CFUseAltHogFile (szFile); if (bFoundHogFile) { strcpy (gameData.missions.szLevelNames [0], gameHogFiles.AltHogFiles.files [0].name); gameData.missions.nLastLevel = 1; } else { sprintf (szFile, "%s%s", szFolder, gameData.missions.szLevelNames [0]); strlwr (szFile); bFoundHogFile = CFUseAltHogFile (szFile); } } } //init vars if (!bFoundHogFile || (gameData.missions.nLastLevel <= 0)) { gameData.missions.nCurrentMission = -1; //no valid mission loaded return 0; } gameStates.app.szCurrentMissionFile = gameData.missions.list [gameData.missions.nCurrentMission].filename; gameStates.app.szCurrentMission = gameData.missions.list [gameData.missions.nCurrentMission].szMissionName; LoadSongList (szFile); return 1; }