View Javadoc

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          // kills_.. (until next) ..
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  //            System.out.println("piece["+ i +"]: "+ pieces[i]);
48              PlayerInfo player = new PlayerInfo();
49              // name
50              player.setName(pieces[i++]);
51              // score
52              player.setScore(Integer.valueOf(pieces[i++]).intValue());
53              // deaths
54              player.setDeaths(Integer.valueOf(pieces[i++]).intValue());
55              // team
56              i++;
57              // ping
58              i++;
59              // kills
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  }