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 BF1942ServerInfo { 12 13 public static ServerInfo getDetails(int localPort, String ipStr, int port, int infoType, int queryType, 14 int gameType) { 15 16 String queryResult = Util.getInfo(localPort, ipStr, port, "\\info\\", infoType, queryType, gameType); 17 ServerInfo serverInfo = null; 18 if(queryResult != null && queryResult.length() > 0) { 19 serverInfo = new ServerInfo(); 20 serverInfo.setGame(Util.getPart(queryResult, "gameId")); 21 serverInfo.setGameVersion(Util.getPart(queryResult, "version")); 22 serverInfo.setIp(ipStr); 23 serverInfo.setPort(Util.getPart(queryResult, "hostport")); 24 serverInfo.setName(Util.getPart(queryResult, "hostname")); 25 serverInfo.setMap(Util.getPart(queryResult, "mapname")); 26 serverInfo.setPlayerCount(Util.getPart(queryResult, "numplayers")); 27 serverInfo.setMaxPlayers(Util.getPart(queryResult, "maxplayers")); 28 serverInfo.setTeam1Tickets(Util.getPart(queryResult, "tickets1")); 29 serverInfo.setTeam2Tickets(Util.getPart(queryResult, "tickets2")); 30 serverInfo.setFullResponse(queryResult); 31 } 32 33 return serverInfo; 34 } 35 36 public static ArrayList getPlayers(int localPort, String ipStr, int port, int infoType, int queryType, 37 int gameType) { 38 39 String recStr = Util.getInfo(localPort, ipStr, port, "\\players\\", infoType, queryType, gameType); 40 ArrayList playerInfo = new ArrayList(); 41 if(recStr != null || recStr.length() > 0) { 42 String[] plyrs = recStr.split("deaths_"); 43 int playerCount = plyrs.length-1; 44 for(int x=1; x < plyrs.length; x++) { 45 String plyrLine = "\\deaths_" + plyrs[x]; 46 47 PlayerInfo player = new PlayerInfo(); 48 player.setDeaths(Integer.valueOf(Util.getPart(plyrLine, "deaths_"+ (x-1))).intValue()); 49 player.setKills(Integer.valueOf(Util.getPart(plyrLine, "kills_"+ (x-1))).intValue()); 50 player.setName(Util.getPart(plyrLine, "playername_"+ (x-1))); 51 player.setScore(Integer.valueOf(Util.getPart(plyrLine, "score_"+ (x-1))).intValue()); 52 playerInfo.add(player); 53 } 54 Collections.sort(playerInfo, new ScoreComparator()); 55 } 56 return playerInfo; 57 } 58 }