int CheckAutoDemo(void) { int result = false; if (M_CheckParm("-auto")) #ifndef HAVE_LIBPCREPOSIX I_Error("Cannot process -auto - " PACKAGE " was compiled without LIBPCRE support"); #else { int i; waddata_t waddata; for (i = 0; (size_t)i < numwadfiles; i++) { if (wadfiles[i].src == source_lmp) { int numwadfiles_required; patterndata_t patterndata; memset(&patterndata, 0, sizeof(patterndata)); numwadfiles_required = DemoNameToWadData(wadfiles[i].name, &waddata, &patterndata); if (waddata.numwadfiles) { result = true; if ((size_t)numwadfiles_required + 1 != waddata.numwadfiles && patterndata.missed) { I_Warning( "DataAutoload: pattern #%i is used\n" "%s not all required files are found, may not work\n", patterndata.pattern_num, patterndata.missed); } else { lprintf(LO_WARN,"DataAutoload: pattern #%i is used\n", patterndata.pattern_num); } WadDataToWadFiles(&waddata); } free(patterndata.missed); WadDataFree(&waddata); break; } } } #endif // HAVE_LIBPCREPOSIX return result; }
bool NetDemo::startRecording(const std::string &filename) { this->filename = filename; if (isPlaying() || isPaused()) { error("Cannot record a netdemo while not connected to a server."); return false; } // Already recording so just ignore the command if (isRecording()) return true; if (demofp != NULL) // file is already open for some reason { fclose(demofp); demofp = NULL; } demofp = fopen(filename.c_str(), "wb"); if (!demofp) { //error("Unable to create netdemo file " + filename + "."); I_Warning("Unable to create netdemo file %s", filename.c_str()); return false; } memset(&header, 0, sizeof(header)); // Note: The header is not finalized at this point. Write it anyway to // reserve space in the output file for it and overwrite it later. if (!writeHeader()) { error("Unable to write netdemo header."); return false; } state = NetDemo::st_recording; header.starting_gametic = gametic; Printf(PRINT_HIGH, "Recording netdemo %s.\n", filename.c_str()); if (connected) { // write a simulation of the connection sequence since the server // has already sent it to the client and it wasn't captured static buf_t tempbuf(MAX_UDP_PACKET); // Fake the launcher query response SZ_Clear(&tempbuf); writeLauncherSequence(&tempbuf); capture(&tempbuf); writeMessages(); // Fake the server's side of the connection sequence SZ_Clear(&tempbuf); writeConnectionSequence(&tempbuf); capture(&tempbuf); writeMessages(); // Record any additional messages (usually a full update if auto-recording)) capture(&net_message); writeMessages(); SZ_Clear(&tempbuf); MSG_WriteMarker(&tempbuf, svc_netdemoloadsnap); capture(&tempbuf); writeMessages(); } return true; }