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 BFVServerInfo {
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, infoType, queryType, gameType);
17 ServerInfo serverInfo = null;
18 if(queryResult != null && queryResult.length() > 0) {
19 serverInfo = new ServerInfo();
20 serverInfo.setGame(Util.getPartGS2(queryResult, "game_id"));
21 serverInfo.setGameVersion(Util.getPartGS2(queryResult, "gamever"));
22 serverInfo.setIp(ipStr);
23 serverInfo.setPort(Util.getPartGS2(queryResult, "hostport"));
24 serverInfo.setName(Util.getPartGS2(queryResult, "hostname"));
25 serverInfo.setMap(Util.getPartGS2(queryResult, "mapname"));
26 serverInfo.setPlayerCount(Util.getPartGS2(queryResult, "numplayers"));
27 serverInfo.setMaxPlayers(Util.getPartGS2(queryResult, "maxplayers"));
28 serverInfo.setFullResponse(queryResult);
29 }
30
31 return serverInfo;
32 }
33
34 public static ArrayList getPlayers(int localPort, String ipStr, int port, int infoType, int queryType,
35 int gameType) {
36
37 String recStr = Util.getInfo(localPort, ipStr, port, infoType, queryType, gameType);
38
39 char chr = 00;
40 char chr2 = 02;
41 int start = recStr.indexOf("kills_"+ chr + chr) + 8;
42 int end = recStr.indexOf(chr + chr + chr2);
43 String stripped = recStr.substring(start, end);
44 ArrayList playerInfo = new ArrayList();
45 String[] pieces = stripped.split(chr+"");
46 for(int i=0; i < pieces.length; i++) {
47
48 PlayerInfo player = new PlayerInfo();
49
50 player.setName(pieces[i++]);
51
52 player.setScore(Integer.valueOf(pieces[i++]).intValue());
53
54 player.setDeaths(Integer.valueOf(pieces[i++]).intValue());
55
56 i++;
57
58 i++;
59
60 player.setKills(Integer.valueOf(pieces[i]).intValue());
61 playerInfo.add(player);
62 }
63 Collections.sort(playerInfo, new ScoreComparator());
64
65 return playerInfo;
66 }
67 }