1 package net.sourceforge.queried.gametypes; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 6 import net.sourceforge.queried.PlayerInfo; 7 import net.sourceforge.queried.ScoreComparator; 8 import net.sourceforge.queried.ServerInfo; 9 import net.sourceforge.queried.Util; 10 11 public class UTServerInfo { 12 13 public static ServerInfo getDetails(int localPort, String ipStr, int port, int infoType, int queryType, 14 int gameType) { 15 16 String queryResult = 17 Util.getInfo(localPort, ipStr, port, "\\info\\", infoType, queryType, gameType); 18 19 ServerInfo serverInfo = null;; 20 if(queryResult != null && queryResult.length() > 1) { 21 serverInfo = new ServerInfo(); 22 serverInfo.setName(Util.getPart(queryResult, "hostname")); 23 serverInfo.setPort(Util.getPart(queryResult, "hostport")); 24 serverInfo.setMap(Util.getPart(queryResult, "mapname")); 25 serverInfo.setPlayerCount(Util.getPart(queryResult, "numplayers")); 26 serverInfo.setMaxPlayers(Util.getPart(queryResult, "maxplayers")); 27 28 serverInfo.setGame(Util.getPart(queryResult, "gametype")); 29 serverInfo.setGameVersion(Util.getPart(queryResult, "gamever")); 30 serverInfo.setIp(ipStr); 31 serverInfo.setFullResponse(queryResult); 32 } 33 34 return serverInfo; 35 } 36 37 public static ArrayList getPlayers(int localPort, String ipStr, int port, int infoType, int queryType, 38 int gameType) { 39 40 String recStr = Util.getInfo(localPort, ipStr, port, "\\players\\", infoType, queryType, gameType); 41 42 ArrayList playerInfo = new ArrayList(); 43 if(recStr != null || recStr.length() > 0) { 44 String[] plyrs = recStr.split("player_"); 45 int playerCount = plyrs.length-1; 46 for(int x=1; x < plyrs.length; x++) { 47 String plyrLine = "\\player_" + plyrs[x]; 48 49 PlayerInfo player = new PlayerInfo(); 50 player.setName(Util.getPart(plyrLine, "player_"+ (x-1))); 51 player.setKills(Integer.valueOf(Util.getPart(plyrLine, "frags_"+ (x-1))).intValue()); 52 playerInfo.add(player); 53 } 54 Collections.sort(playerInfo, new ScoreComparator()); 55 } 56 return playerInfo; 57 } 58 }