From 151e678e844eb36265559e7819d7557012cfa229 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 23 Jan 2016 13:37:34 +0100 Subject: [PATCH] Changed history handling for user a bit. Added history to table waiting dialog and user avatar tooltip. --- .../client/dialog/TableWaitingDialog.java | 14 ++-- .../java/mage/client/game/PlayerPanelExt.java | 5 +- Mage.Common/src/mage/view/SeatView.java | 8 ++ .../src/mage/player/human/HumanPlayer.java | 37 +++++---- .../src/main/java/mage/server/User.java | 23 +++--- Mage/src/main/java/mage/game/Seat.java | 4 +- Mage/src/main/java/mage/players/Player.java | 2 + .../main/java/mage/players/PlayerImpl.java | 76 +++++++++---------- .../main/java/mage/players/net/UserData.java | 12 +++ 9 files changed, 102 insertions(+), 79 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java index 9840c82582b..2f307ea2f78 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/TableWaitingDialog.java @@ -26,7 +26,7 @@ * or implied, of BetaSteward_at_googlemail.com. */ -/* + /* * TableWaitingDialog.java * * Created on Dec 16, 2009, 10:27:44 AM @@ -68,7 +68,7 @@ public class TableWaitingDialog extends MageDialog { private Session session; private final TableWaitModel tableWaitModel; private UpdateSeatsTask updateTask; - private static final int[] defaultColumnsWidth = {20, 50, 100, 100}; + private static final int[] defaultColumnsWidth = {20, 50, 100, 100, 100}; /** * Creates new form TableWaitingDialog @@ -268,10 +268,8 @@ public class TableWaitingDialog extends MageDialog { if (session.startMatch(roomId, tableId)) { closeDialog(); } - } else { - if (session.startTournament(roomId, tableId)) { - closeDialog(); - } + } else if (session.startTournament(roomId, tableId)) { + closeDialog(); } }//GEN-LAST:event_btnStartActionPerformed @@ -319,7 +317,7 @@ public class TableWaitingDialog extends MageDialog { class TableWaitModel extends AbstractTableModel { - private final String[] columnNames = new String[]{"Seat", "Loc", "Player Name", "Player Type"}; + private final String[] columnNames = new String[]{"Seat", "Loc", "Player Name", "Player Type", "History"}; private SeatView[] seats = new SeatView[0]; public void loadData(TableView table) { @@ -353,6 +351,8 @@ class TableWaitModel extends AbstractTableModel { return seats[arg0].getPlayerName(); case 3: return seats[arg0].getPlayerType(); + case 4: + return seats[arg0].getHistory(); } } return ""; diff --git a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java index c94ed0dfa14..01e872dc5a7 100644 --- a/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java +++ b/Mage.Client/src/main/java/mage/client/game/PlayerPanelExt.java @@ -26,7 +26,7 @@ * or implied, of BetaSteward_at_googlemail.com. */ -/* + /* * PlayerPanel.java * * Created on Nov 18, 2009, 3:01:31 PM @@ -288,7 +288,8 @@ public class PlayerPanelExt extends javax.swing.JPanel { basicTooltipText = "Name: " + player.getName() + "
Country: " + countryname + "
Deck hash code: " + player.getDeckHashCode() - + "
Wins: " + player.getWins() + " of " + player.getWinsNeeded() + " (to win the match)"; + + "
This match wins: " + player.getWins() + " of " + player.getWinsNeeded() + " (to win the match)" + + (player.getUserData() == null ? "" : "
History: " + player.getUserData().getHistory()); } // Extend tooltip StringBuilder tooltipText = new StringBuilder(basicTooltipText); diff --git a/Mage.Common/src/mage/view/SeatView.java b/Mage.Common/src/mage/view/SeatView.java index d812dadebd6..49d53db0917 100644 --- a/Mage.Common/src/mage/view/SeatView.java +++ b/Mage.Common/src/mage/view/SeatView.java @@ -44,6 +44,7 @@ public class SeatView implements Serializable { private UUID playerId; private final String playerName; private final String playerType; + private final String history; public SeatView(Seat seat) { if (seat.getPlayer() != null) { @@ -51,13 +52,16 @@ public class SeatView implements Serializable { this.playerName = seat.getPlayer().getName(); if (seat.getPlayer().getUserData() == null) { this.flagName = UserData.getDefaultFlagName(); + this.history = ""; } else { this.flagName = seat.getPlayer().getUserData().getFlagName(); + this.history = seat.getPlayer().getUserData().getHistory(); } } else { // Empty seat this.playerName = ""; this.flagName = ""; + this.history = ""; } this.playerType = seat.getPlayerType(); } @@ -78,4 +82,8 @@ public class SeatView implements Serializable { return flagName; } + public String getHistory() { + return history; + } + } diff --git a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java index 48895f9e727..9dc9d7ff025 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java @@ -358,15 +358,13 @@ public class HumanPlayer extends PlayerImpl { } } } - } else { - if (target.canTarget(response.getUUID(), game)) { - if (target.getTargets().contains(response.getUUID())) { // if already included remove it with - target.remove(response.getUUID()); - } else { - target.addTarget(response.getUUID(), null, game); - if (target.doneChosing()) { - return true; - } + } else if (target.canTarget(response.getUUID(), game)) { + if (target.getTargets().contains(response.getUUID())) { // if already included remove it with + target.remove(response.getUUID()); + } else { + target.addTarget(response.getUUID(), null, game); + if (target.doneChosing()) { + return true; } } } @@ -530,12 +528,10 @@ public class HumanPlayer extends PlayerImpl { if (response.getUUID() != null) { if (target.getTargets().contains(response.getUUID())) { // if already included remove it target.remove(response.getUUID()); - } else { - if (target.canTarget(response.getUUID(), cards, game)) { - target.addTarget(response.getUUID(), source, game); - if (target.doneChosing()) { - return true; - } + } else if (target.canTarget(response.getUUID(), cards, game)) { + target.addTarget(response.getUUID(), source, game); + if (target.doneChosing()) { + return true; } } } else { @@ -1065,10 +1061,8 @@ public class HumanPlayer extends PlayerImpl { // does not block yet and can block or can block more attackers if (filter.match(blocker, null, playerId, game)) { selectCombatGroup(defendingPlayerId, blocker.getId(), game); - } else { - if (filterBlock.match(blocker, null, playerId, game) && game.getStack().isEmpty()) { - removeBlocker = true; - } + } else if (filterBlock.match(blocker, null, playerId, game) && game.getStack().isEmpty()) { + removeBlocker = true; } if (removeBlocker) { @@ -1546,4 +1540,9 @@ public class HumanPlayer extends PlayerImpl { pass(game); return true; } + + @Override + public String getHistory() { + return "no available"; + } } diff --git a/Mage.Server/src/main/java/mage/server/User.java b/Mage.Server/src/main/java/mage/server/User.java index df8898469e7..cad00ac6671 100644 --- a/Mage.Server/src/main/java/mage/server/User.java +++ b/Mage.Server/src/main/java/mage/server/User.java @@ -88,7 +88,6 @@ public class User { private UserState userState; private UserData userData; private UserStats userStats; - private String history; public User(String userName, String host) { this.userId = UUID.randomUUID(); @@ -108,12 +107,7 @@ public class User { this.watchedGames = new ArrayList<>(); this.tablesToDelete = new ArrayList<>(); this.sessionId = ""; - this.userStats = UserStatsRepository.instance.getUser(this.userName); - if (userStats != null) { - this.history = userStatsToString(userStats.getProto()); - } else { - this.history = ""; - } + this.userStats = null; } public String getName() { @@ -406,6 +400,12 @@ 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(""); + } } } @@ -549,11 +549,16 @@ public class User { // resetUserStats loads UserStats from DB. public void resetUserStats() { this.userStats = UserStatsRepository.instance.getUser(this.userName); - this.history = userStatsToString(userStats.getProto()); + if (userData != null) { + userData.setHistory(userStatsToString(userStats.getProto())); + } } public String getHistory() { - return history; + if (userData != null) { + return userData.getHistory(); + } + return ""; } private static String userStatsToString(ResultProtos.UserStatsProto proto) { diff --git a/Mage/src/main/java/mage/game/Seat.java b/Mage/src/main/java/mage/game/Seat.java index 751a18d3932..f9a3325ac23 100644 --- a/Mage/src/main/java/mage/game/Seat.java +++ b/Mage/src/main/java/mage/game/Seat.java @@ -24,8 +24,7 @@ * The views and conclusions contained in the software and documentation are those of the * authors and should not be interpreted as representing official policies, either expressed * or implied, of BetaSteward_at_googlemail.com. -*/ - + */ package mage.game; import java.io.Serializable; @@ -38,7 +37,6 @@ import mage.players.Player; public class Seat implements Serializable { // private static final Logger logger = Logger.getLogger(Seat.class); - private String playerType; private Player player; diff --git a/Mage/src/main/java/mage/players/Player.java b/Mage/src/main/java/mage/players/Player.java index 654f503e0c8..9bad10ada90 100644 --- a/Mage/src/main/java/mage/players/Player.java +++ b/Mage/src/main/java/mage/players/Player.java @@ -824,4 +824,6 @@ public interface Player extends MageItem, Copyable { * @return */ boolean addTargets(Ability ability, Game game); + + String getHistory(); } diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 5f3e7b73f34..301900b70cf 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -524,31 +524,29 @@ public abstract class PlayerImpl implements Player, Serializable { inRange.add(player.getId()); } } + } else if ((range.getRange() * 2) + 1 >= game.getPlayers().size()) { + for (Player player : game.getPlayers().values()) { + if (!player.hasLeft()) { + inRange.add(player.getId()); + } + } } else { - if ((range.getRange() * 2) + 1 >= game.getPlayers().size()) { - for (Player player : game.getPlayers().values()) { - if (!player.hasLeft()) { - inRange.add(player.getId()); - } + inRange.add(playerId); + PlayerList players = game.getState().getPlayerList(playerId); + for (int i = 0; i < range.getRange(); i++) { + Player player = players.getNext(game); + while (player.hasLeft()) { + player = players.getNext(game); } - } else { - inRange.add(playerId); - PlayerList players = game.getState().getPlayerList(playerId); - for (int i = 0; i < range.getRange(); i++) { - Player player = players.getNext(game); - while (player.hasLeft()) { - player = players.getNext(game); - } - inRange.add(player.getId()); - } - players = game.getState().getPlayerList(playerId); - for (int i = 0; i < range.getRange(); i++) { - Player player = players.getPrevious(game); - while (player.hasLeft()) { - player = players.getPrevious(game); - } - inRange.add(player.getId()); + inRange.add(player.getId()); + } + players = game.getState().getPlayerList(playerId); + for (int i = 0; i < range.getRange(); i++) { + Player player = players.getPrevious(game); + while (player.hasLeft()) { + player = players.getPrevious(game); } + inRange.add(player.getId()); } } } @@ -2098,7 +2096,8 @@ public abstract class PlayerImpl implements Player, Serializable { break; } } - if (!opponentInGame || // if no more opponent is in game the wins event may no longer be replaced + if (!opponentInGame + || // if no more opponent is in game the wins event may no longer be replaced !game.replaceEvent(new GameEvent(GameEvent.EventType.WINS, null, null, playerId))) { logger.debug("player won -> start: " + this.getName()); if (!this.loses) { @@ -2178,10 +2177,8 @@ public abstract class PlayerImpl implements Player, Serializable { if (blocker != null && group != null && group.canBlock(blocker, game)) { group.addBlocker(blockerId, playerId, game); game.getCombat().addBlockingGroup(blockerId, attackerId, playerId, game); - } else { - if (this.isHuman() && !game.isSimulation()) { - game.informPlayer(this, "You can't block this creature."); - } + } else if (this.isHuman() && !game.isSimulation()) { + game.informPlayer(this, "You can't block this creature."); } } @@ -2802,14 +2799,12 @@ public abstract class PlayerImpl implements Player, Serializable { } if (targetNum < option.getTargets().size() - 2) { addTargetOptions(options, newOption, targetNum + 1, game); + } else if (option.getChoices().size() > 0) { + addChoiceOptions(options, newOption, 0, game); + } else if (option.getCosts().getTargets().size() > 0) { + addCostTargetOptions(options, newOption, 0, game); } else { - if (option.getChoices().size() > 0) { - addChoiceOptions(options, newOption, 0, game); - } else if (option.getCosts().getTargets().size() > 0) { - addCostTargetOptions(options, newOption, 0, game); - } else { - options.add(newOption); - } + options.add(newOption); } } } @@ -2820,12 +2815,10 @@ public abstract class PlayerImpl implements Player, Serializable { newOption.getChoices().get(choiceNum).setChoice(choice); if (choiceNum < option.getChoices().size() - 1) { addChoiceOptions(options, newOption, choiceNum + 1, game); + } else if (option.getCosts().getTargets().size() > 0) { + addCostTargetOptions(options, newOption, 0, game); } else { - if (option.getCosts().getTargets().size() > 0) { - addCostTargetOptions(options, newOption, 0, game); - } else { - options.add(newOption); - } + options.add(newOption); } } } @@ -3512,4 +3505,9 @@ public abstract class PlayerImpl implements Player, Serializable { return true; } + @Override + public String getHistory() { + return "no available"; + } + } diff --git a/Mage/src/main/java/mage/players/net/UserData.java b/Mage/src/main/java/mage/players/net/UserData.java index c2c3b2a3bb4..bca9f231700 100644 --- a/Mage/src/main/java/mage/players/net/UserData.java +++ b/Mage/src/main/java/mage/players/net/UserData.java @@ -23,6 +23,8 @@ public class UserData implements Serializable { protected boolean passPriorityActivation; protected boolean autoOrderTrigger; + protected String history; + public UserData(UserGroup userGroup, int avatarId, boolean showAbilityPickerForced, boolean allowRequestShowHandCards, boolean confirmEmptyManaPool, UserSkipPrioritySteps userSkipPrioritySteps, String flagName, boolean askMoveToGraveOrder, boolean manaPoolAutomatic, boolean manaPoolAutomaticRestricted, @@ -40,6 +42,7 @@ public class UserData implements Serializable { this.passPriorityCast = passPriorityCast; this.passPriorityActivation = passPriorityActivation; this.autoOrderTrigger = autoOrderTrigger; + this.history = ""; } public void update(UserData userData) { @@ -166,7 +169,16 @@ public class UserData implements Serializable { this.autoOrderTrigger = autoOrderTrigger; } + public void setHistory(String history) { + this.history = history; + } + + public String getHistory() { + return history; + } + public static String getDefaultFlagName() { return "world.png"; } + }