Ejemplo n.º 1
0
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;
}