diff --git a/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.java b/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.java index 795a8618cd..497376ade0 100644 --- a/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/PlayersChatPanel.java @@ -61,7 +61,7 @@ public class PlayersChatPanel extends javax.swing.JPanel { private final List players = new ArrayList<>(); private final UserTableModel userTableModel; - private static final int[] DEFAULT_COLUMNS_WIDTH = {20, 100, 100, 80, 80}; + private static final int[] DEFAULT_COLUMNS_WIDTH = {20, 100, 100, 100, 80, 80}; /* @@ -118,7 +118,7 @@ public class PlayersChatPanel extends javax.swing.JPanel { class UserTableModel extends AbstractTableModel { - private final String[] columnNames = new String[]{"Loc", "Players", "History", "Games", "Connection"}; + private final String[] columnNames = new String[]{"Loc", "Players", "Matches", "Tourneys", "Games", "Connection"}; private UsersView[] players = new UsersView[0]; public void loadData(Collection roomUserInfoList) throws MageRemoteException { @@ -128,7 +128,7 @@ public class PlayersChatPanel extends javax.swing.JPanel { TableColumnModel tcm = th.getColumnModel(); tcm.getColumn(jTablePlayers.convertColumnIndexToView(1)).setHeaderValue("Players (" + this.players.length + ")"); - tcm.getColumn(jTablePlayers.convertColumnIndexToView(3)).setHeaderValue( + tcm.getColumn(jTablePlayers.convertColumnIndexToView(4)).setHeaderValue( "Games " + roomUserInfo.getNumberActiveGames() + (roomUserInfo.getNumberActiveGames() != roomUserInfo.getNumberGameThreads() ? " (T:" + roomUserInfo.getNumberGameThreads() : " (") + " limit: " + roomUserInfo.getNumberMaxGames() + ")"); @@ -154,10 +154,12 @@ public class PlayersChatPanel extends javax.swing.JPanel { case 1: return players[arg0].getUserName(); case 2: - return players[arg0].getHistory(); + return players[arg0].getMatchHistory(); case 3: - return players[arg0].getInfoGames(); + return players[arg0].getTourneyHistory(); case 4: + return players[arg0].getInfoGames(); + case 5: return players[arg0].getInfoPing(); } return ""; diff --git a/Mage.Common/src/mage/view/UsersView.java b/Mage.Common/src/mage/view/UsersView.java index 40a39fc41e..24aece6f1f 100644 --- a/Mage.Common/src/mage/view/UsersView.java +++ b/Mage.Common/src/mage/view/UsersView.java @@ -39,13 +39,15 @@ public class UsersView implements Serializable { private final String flagName; private final String userName; - private final String history; + private final String matchHistory; + private final String tourneyHistory; private final String infoGames; private final String infoPing; - public UsersView(String flagName, String userName, String history, String infoGames, String infoPing) { + public UsersView(String flagName, String userName, String matchHistory, String tourneyHistory, String infoGames, String infoPing) { this.flagName = flagName; - this.history = history; + this.matchHistory = matchHistory; + this.tourneyHistory = tourneyHistory; this.userName = userName; this.infoGames = infoGames; this.infoPing = infoPing; @@ -59,8 +61,12 @@ public class UsersView implements Serializable { return userName; } - public String getHistory() { - return history; + public String getMatchHistory() { + return matchHistory; + } + + public String getTourneyHistory() { + return tourneyHistory; } public String getInfoGames() { diff --git a/Mage.Server/src/main/java/mage/server/User.java b/Mage.Server/src/main/java/mage/server/User.java index 335e538861..903d4bef60 100644 --- a/Mage.Server/src/main/java/mage/server/User.java +++ b/Mage.Server/src/main/java/mage/server/User.java @@ -399,12 +399,7 @@ public class User { this.userData.update(userData); } else { this.userData = userData; - this.userStats = UserStatsRepository.instance.getUser(this.userName); - if (userStats != null) { - this.userData.setHistory(userStatsToString(userStats.getProto())); - } else { - this.userData.setHistory("Matches: 0"); - } + resetUserStats(); } } @@ -528,85 +523,72 @@ public class User { } } - // getUserStats returns the UserStats for this user. This caches the result, so if the stats is - // updated call resetUserStats to refresh it. - public UserStats getUserStats() { - if (this.userStats == null) { - resetUserStats(); - } - return this.userStats; - } - - // resetUserStats loads UserStats from DB. public void resetUserStats() { - this.userStats = UserStatsRepository.instance.getUser(this.userName); - if (userData != null) { - userData.setHistory(userStatsToString(userStats.getProto())); + if (userData == null) { + return; + } + userStats = UserStatsRepository.instance.getUser(this.userName); + if (userStats != null) { + userData.setMatchHistory(userStatsToMatchHistory(userStats.getProto())); + userData.setTourneyHistory(userStatsToTourneyHistory(userStats.getProto())); + } else { + userData.setMatchHistory("0"); + userData.setTourneyHistory("0"); } } - public String getHistory() { + public String getMatchHistory() { if (userData != null) { - return userData.getHistory(); + return userData.getMatchHistory(); } return ""; } - public static String userStatsToString(ResultProtos.UserStatsProto proto) { - List builders = new ArrayList<>(); - if (proto.getMatches() > 0) { - StringBuilder builder = new StringBuilder(); - builder.append("Matches:"); - builder.append(proto.getMatches()); - List quit = new ArrayList<>(); - if (proto.getMatchesIdleTimeout() > 0) { - quit.add("I:" + Integer.toString(proto.getMatchesIdleTimeout())); - } - if (proto.getMatchesTimerTimeout() > 0) { - quit.add("T:" + Integer.toString(proto.getMatchesTimerTimeout())); - } - if (proto.getMatchesQuit() > 0) { - quit.add("Q:" + Integer.toString(proto.getMatchesQuit())); - } - if (quit.size() > 0) { - builder.append(" ("); - joinStrings(builder, quit, " "); - builder.append(")"); - } - builders.add(builder); + public String getTourneyHistory() { + if (userData != null) { + return userData.getTourneyHistory(); } - if (proto.getTourneys() > 0) { - StringBuilder builder = new StringBuilder(); - builder.append("Tourneys:"); - builder.append(proto.getTourneys()); - List quit = new ArrayList<>(); - if (proto.getTourneysQuitDuringDrafting() > 0) { - quit.add("D:" + Integer.toString(proto.getTourneysQuitDuringDrafting())); - } - if (proto.getTourneysQuitDuringConstruction() > 0) { - quit.add("C:" + Integer.toString(proto.getTourneysQuitDuringConstruction())); - } - if (proto.getTourneysQuitDuringRound() > 0) { - quit.add("R:" + Integer.toString(proto.getTourneysQuitDuringRound())); - } - if (quit.size() > 0) { - builder.append(" ("); - joinStrings(builder, quit, " "); - builder.append(")"); - } - builders.add(builder); - } - return joinBuilders(builders); + return ""; } - private static String joinBuilders(List builders) { - if (builders.isEmpty()) { - return null; + public static String userStatsToMatchHistory(ResultProtos.UserStatsProto proto) { + StringBuilder builder = new StringBuilder(); + builder.append(proto.getMatches()); + List quit = new ArrayList<>(); + if (proto.getMatchesIdleTimeout() > 0) { + quit.add("I:" + Integer.toString(proto.getMatchesIdleTimeout())); } - StringBuilder builder = builders.get(0); - for (int i = 1; i < builders.size(); ++i) { - builder.append(" "); - builder.append(builders.get(i)); + if (proto.getMatchesTimerTimeout() > 0) { + quit.add("T:" + Integer.toString(proto.getMatchesTimerTimeout())); + } + if (proto.getMatchesQuit() > 0) { + quit.add("Q:" + Integer.toString(proto.getMatchesQuit())); + } + if (quit.size() > 0) { + builder.append(" ("); + joinStrings(builder, quit, " "); + builder.append(")"); + } + return builder.toString(); + } + + public static String userStatsToTourneyHistory(ResultProtos.UserStatsProto proto) { + StringBuilder builder = new StringBuilder(); + builder.append(proto.getTourneys()); + List quit = new ArrayList<>(); + if (proto.getTourneysQuitDuringDrafting() > 0) { + quit.add("D:" + Integer.toString(proto.getTourneysQuitDuringDrafting())); + } + if (proto.getTourneysQuitDuringConstruction() > 0) { + quit.add("C:" + Integer.toString(proto.getTourneysQuitDuringConstruction())); + } + if (proto.getTourneysQuitDuringRound() > 0) { + quit.add("R:" + Integer.toString(proto.getTourneysQuitDuringRound())); + } + if (quit.size() > 0) { + builder.append(" ("); + joinStrings(builder, quit, " "); + builder.append(")"); } return builder.toString(); } diff --git a/Mage.Server/src/main/java/mage/server/game/GamesRoomImpl.java b/Mage.Server/src/main/java/mage/server/game/GamesRoomImpl.java index 30b005e19c..8c9d25b96d 100644 --- a/Mage.Server/src/main/java/mage/server/game/GamesRoomImpl.java +++ b/Mage.Server/src/main/java/mage/server/game/GamesRoomImpl.java @@ -114,13 +114,14 @@ public class GamesRoomImpl extends RoomImpl implements GamesRoom, Serializable { List users = new ArrayList<>(); for (User user : UserManager.getInstance().getUsers()) { try { - users.add(new UsersView(user.getUserData().getFlagName(), user.getName(), user.getHistory(), user.getGameInfo(), user.getPingInfo())); + users.add(new UsersView(user.getUserData().getFlagName(), user.getName(), user.getMatchHistory(), user.getTourneyHistory(), user.getGameInfo(), user.getPingInfo())); } catch (Exception ex) { logger.fatal("User update exception: " + user.getName() + " - " + ex.toString(), ex); users.add(new UsersView( (user.getUserData() != null && user.getUserData().getFlagName() != null) ? user.getUserData().getFlagName() : "world", user.getName() != null ? user.getName() : "", - user.getHistory() != null ? user.getHistory() : "", + user.getMatchHistory() != null ? user.getMatchHistory() : "", + user.getTourneyHistory() != null ? user.getTourneyHistory() : "", "[exception]", user.getPingInfo() != null ? user.getPingInfo() : "")); } diff --git a/Mage/src/main/java/mage/players/net/UserData.java b/Mage/src/main/java/mage/players/net/UserData.java index bca9f23170..949cbbd6d4 100644 --- a/Mage/src/main/java/mage/players/net/UserData.java +++ b/Mage/src/main/java/mage/players/net/UserData.java @@ -23,7 +23,8 @@ public class UserData implements Serializable { protected boolean passPriorityActivation; protected boolean autoOrderTrigger; - protected String history; + protected String matchHistory; + protected String tourneyHistory; public UserData(UserGroup userGroup, int avatarId, boolean showAbilityPickerForced, boolean allowRequestShowHandCards, boolean confirmEmptyManaPool, UserSkipPrioritySteps userSkipPrioritySteps, @@ -42,7 +43,8 @@ public class UserData implements Serializable { this.passPriorityCast = passPriorityCast; this.passPriorityActivation = passPriorityActivation; this.autoOrderTrigger = autoOrderTrigger; - this.history = ""; + this.matchHistory = ""; + this.tourneyHistory = ""; } public void update(UserData userData) { @@ -169,12 +171,20 @@ public class UserData implements Serializable { this.autoOrderTrigger = autoOrderTrigger; } - public void setHistory(String history) { - this.history = history; + public void setMatchHistory(String history) { + this.matchHistory = history; } - public String getHistory() { - return history; + public String getMatchHistory() { + return matchHistory; + } + + public void setTourneyHistory(String history) { + this.tourneyHistory = history; + } + + public String getTourneyHistory() { + return tourneyHistory; } public static String getDefaultFlagName() {