void Replay::load( const std::string& filename ) { filename_ = filename; MPQArchive archive; // Sanity check isValid_ = true; if ( !archive.load( filename ) ) { std::cerr << "Error loading MPQ file " << filename << "." << std::endl; isValid_ = false; return; } MPQFile* infoFile = archive.getFile( "replay.info" ); const MPQFile* gameFile = archive.getFile( "replay.game.events" ); const MPQFile* syncFile = archive.getFile( "replay.sync.events" ); const MPQFile* messageFile = archive.getFile( "replay.message.events" ); const MPQFile* saveFile = archive.getFile( "save.jpg" ); info_.load ( infoFile->getFileContent(), infoFile->getFileSize()); gameEvents_.load ( gameFile->getFileContent(), gameFile->getFileSize() ); syncEvents_.load ( syncFile->getFileContent(), syncFile->getFileSize() ); messageEvents_.load( messageFile->getFileContent(), messageFile->getFileSize() ); imageSize_ = saveFile->getFileSize(); imageBuffer_ = new uint8_t[imageSize_]; std::copy( saveFile->getFileContent(), saveFile->getFileContent()+imageSize_, imageBuffer_ ); delete infoFile; delete gameFile; delete syncFile; delete messageFile; delete saveFile; }