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 }