/**
  * Creates a new S2A_INFO_DETAILED response object based on the given data
  *
  * @param string $data The raw packet data replied from the server
  */
 public function __construct($data)
 {
     parent::__construct(SteamPacket::S2A_INFO_DETAILED_HEADER, $data);
     $this->info['serverIp'] = $this->contentData->getString();
     $this->info['serverName'] = $this->contentData->getString();
     $this->info['mapName'] = $this->contentData->getString();
     $this->info['gameDir'] = $this->contentData->getString();
     $this->info['gameDescription'] = $this->contentData->getString();
     $this->info['numberOfPlayers'] = $this->contentData->getByte();
     $this->info['maxPlayers'] = $this->contentData->getByte();
     $this->info['networkVersion'] = $this->contentData->getByte();
     $this->info['dedicated'] = $this->contentData->getByte();
     $this->info['operatingSystem'] = $this->contentData->getByte();
     $this->info['passwordProtected'] = $this->contentData->getByte() == 1;
     $this->info['isMod'] = $this->contentData->getByte() == 1;
     if ($this->info['isMod']) {
         $this->info['modInfo']['urlInfo'] = $this->contentData->getString();
         $this->info['modInfo']['urlDl'] = $this->contentData->getString();
         $this->contentData->getByte();
         if ($this->contentData->remaining() == 12) {
             $this->info['modInfo']['modVersion'] = $this->contentData->getLong();
             $this->info['modInfo']['modSize'] = $this->contentData->getLong();
             $this->info['modInfo']['svOnly'] = $this->contentData->getByte() == 1;
             $this->info['modInfo']['clDll'] = $this->contentData->getByte() == 1;
             $this->info['secure'] = $this->contentData->getByte() == 1;
             $this->info['numberOfBots'] = $this->contentData->getByte();
         }
     } else {
         $this->info['secure'] = $this->contentData->getByte() == 1;
         $this->info['numberOfBots'] = $this->contentData->getByte();
     }
 }
 /**
  * Creates a new S2A_INFO2 response object based on the given data
  *
  * @param string $data The raw packet data replied from the server
  */
 public function __construct($data)
 {
     parent::__construct(SteamPacket::S2A_INFO2_HEADER, $data);
     $this->info['networkVersion'] = $this->contentData->getByte();
     $this->info['serverName'] = $this->contentData->getString();
     $this->info['mapName'] = $this->contentData->getString();
     $this->info['gameDir'] = $this->contentData->getString();
     $this->info['gameDesc'] = $this->contentData->getString();
     $this->info['appId'] = $this->contentData->getShort();
     $this->info['numberOfPlayers'] = $this->contentData->getByte();
     $this->info['maxPlayers'] = $this->contentData->getByte();
     $this->info['botNumber'] = $this->contentData->getByte();
     $this->info['dedicated'] = chr($this->contentData->getByte());
     $this->info['operatingSystem'] = chr($this->contentData->getByte());
     $this->info['passwordProtected'] = $this->contentData->getByte() == 1;
     $this->info['secureServer'] = $this->contentData->getByte() == 1;
     $this->info['gameVersion'] = $this->contentData->getString();
     if ($this->contentData->remaining() > 0) {
         $extraDataFlag = $this->contentData->getByte();
         if ($extraDataFlag & self::EDF_GAME_PORT) {
             $this->info['serverPort'] = $this->contentData->getShort();
         }
         if ($extraDataFlag & self::EDF_SERVER_ID) {
             $this->info['serverId'] = $this->contentData->getUnsignedLong() | $this->contentData->getUnsignedLong() << 32;
         }
         if ($extraDataFlag & self::EDF_SOURCE_TV) {
             $this->info['tvPort'] = $this->contentData->getShort();
             $this->info['tvName'] = $this->contentData->getString();
         }
         if ($extraDataFlag & self::EDF_SERVER_TAGS) {
             $this->info['serverTags'] = $this->contentData->getString();
         }
         if ($extraDataFlag & self::EDF_GAME_ID) {
             $this->info['gameId'] = $this->contentData->getUnsignedLong() | $this->contentData->getUnsignedLong() << 32;
         }
     }
 }