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 }