From ae44981cfa80f5f71e52a367783492c81969c2bf Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 7 Aug 2013 16:50:25 +0200 Subject: [PATCH] Added a game end dialog, that shows the result of the finished game. --- .../src/main/java/mage/client/MageFrame.java | 7 + .../mage/client/dialog/GameEndDialog.form | 303 +++++++++++++++++ .../mage/client/dialog/GameEndDialog.java | 318 ++++++++++++++++++ .../java/mage/client/dialog/MageDialog.java | 6 + .../client/remote/CallbackClientImpl.java | 4 + .../main/java/mage/client/util/Format.java | 76 +++++ Mage.Client/src/main/resources/game_lost.jpg | Bin 0 -> 104725 bytes Mage.Client/src/main/resources/game_won.jpg | Bin 0 -> 37838 bytes Mage.Common/src/mage/view/GameEndView.java | 147 ++++++++ Mage.Common/src/mage/view/PlayerView.java | 9 +- .../java/mage/server/TableController.java | 4 + .../src/main/java/mage/server/User.java | 4 + .../java/mage/server/game/GameController.java | 19 ++ .../java/mage/server/game/GameSession.java | 10 + .../java/mage/server/game/GameWatcher.java | 6 + Mage/src/mage/game/Game.java | 1 + Mage/src/mage/game/GameImpl.java | 9 + Mage/src/mage/game/events/TableEvent.java | 2 +- Mage/src/mage/game/match/MatchImpl.java | 1 + 19 files changed, 922 insertions(+), 4 deletions(-) create mode 100644 Mage.Client/src/main/java/mage/client/dialog/GameEndDialog.form create mode 100644 Mage.Client/src/main/java/mage/client/dialog/GameEndDialog.java create mode 100644 Mage.Client/src/main/java/mage/client/util/Format.java create mode 100644 Mage.Client/src/main/resources/game_lost.jpg create mode 100644 Mage.Client/src/main/resources/game_won.jpg create mode 100644 Mage.Common/src/mage/view/GameEndView.java diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index ec45800b9a5..e56fcf0a5ea 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -93,6 +93,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.prefs.Preferences; +import mage.view.GameEndView; /** * @author BetaSteward_at_googlemail.com @@ -611,6 +612,12 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { } } + public void showGameEndDialog(GameEndView gameEndView) { + GameEndDialog gameEndDialog = new GameEndDialog(gameEndView); + desktopPane.add(gameEndDialog, JLayeredPane.POPUP_LAYER); + gameEndDialog.showDialog(); + } + public void showTableWaitingDialog(UUID roomId, UUID tableId, boolean isTournament) { TableWaitingDialog tableWaitingDialog = new TableWaitingDialog(); desktopPane.add(tableWaitingDialog, JLayeredPane.MODAL_LAYER); diff --git a/Mage.Client/src/main/java/mage/client/dialog/GameEndDialog.form b/Mage.Client/src/main/java/mage/client/dialog/GameEndDialog.form new file mode 100644 index 00000000000..256cc2251aa --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/dialog/GameEndDialog.form @@ -0,0 +1,303 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Mage.Client/src/main/java/mage/client/dialog/GameEndDialog.java b/Mage.Client/src/main/java/mage/client/dialog/GameEndDialog.java new file mode 100644 index 00000000000..2888b329118 --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/dialog/GameEndDialog.java @@ -0,0 +1,318 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * 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. + */ + +/* + * GameEndDialog.java + * + * Created on Jul 31, 2013, 9:41:00 AM + */ + +package mage.client.dialog; + +import java.awt.Color; +import java.awt.Image; +import java.awt.Rectangle; +import java.awt.image.BufferedImage; +import java.text.DateFormat; +import java.util.Calendar; +import java.util.Date; +import javax.swing.ImageIcon; +import mage.client.util.AudioManager; +import mage.client.util.Format; +import mage.client.util.ImageHelper; +import mage.client.util.gui.BufferedImageBuilder; +import mage.view.GameEndView; +import mage.view.PlayerView; + +/** + * + * @author LevelX2 + */ +public class GameEndDialog extends MageDialog { + + private final DateFormat df = DateFormat.getDateTimeInstance();; + + + /** Creates new form GameEndDialog */ + public GameEndDialog(GameEndView gameEndView) { + + initComponents(); + this.modal = true; + + pnlText.setOpaque(true); + pnlText.setBackground(new Color(240,240,240,140)); + + Rectangle r = new Rectangle(610, 250); + Image image = ImageHelper.getImageFromResources(gameEndView.hasWon() ?"/game_won.jpg":"/game_lost.jpg"); + BufferedImage imageResult = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r); + ImageIcon icon = new ImageIcon(imageResult); + lblResultImage.setIcon(icon); + + this.lblResultText.setText(gameEndView.getResultMessage()); + + // game duration + txtDurationGame.setText(Format.getDuration(gameEndView.getStartTime(), gameEndView.getEndTime())); + txtDurationGame.setToolTipText(new StringBuilder(df.format(gameEndView.getStartTime())).append(" - ").append(df.format(gameEndView.getEndTime())).toString() ); + + // match duration + Calendar cal = Calendar.getInstance(); + txtDurationMatch.setText(Format.getDuration(gameEndView.getMatchView().getStartTime(), cal.getTime())); + txtDurationMatch.setToolTipText(new StringBuilder(df.format(gameEndView.getMatchView().getStartTime())).append(" - ").append(df.format(cal.getTime())).toString() ); + + StringBuilder sb = new StringBuilder(); + for (PlayerView player : gameEndView.getPlayers()) { + sb.append(player.getName()).append(" Life: ").append(player.getLife()).append(" "); + } + this.txtLife.setText(sb.toString()); + + if (gameEndView.hasWon()) { + AudioManager.playPlayerJoinedTable(); + } else { + AudioManager.playButtonCancel(); + } + + txtMatchScore.setText(gameEndView.getMatchView().getResult()); + + if (gameEndView.getNameMatchWinner() != null) { + if (gameEndView.getClientPlayer().getName().equals(gameEndView.getNameMatchWinner())) { + lblMatchInfo.setText("You won the match!"); + } else { + lblMatchInfo.setText(new StringBuilder(gameEndView.getNameMatchWinner()).append(" won the match!").toString()); + } + } else { + int winsNeeded = gameEndView.getWinsNeeded() - gameEndView.getWins(); + lblMatchInfo.setText(new StringBuilder("You need ").append(winsNeeded == 1 ? "one win ":winsNeeded + " wins ").append("to win the match.").toString()); + } + + + } + + public void showDialog() { + this.setLocation(100, 100); + this.setVisible(true); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel2 = new javax.swing.JPanel(); + tabPane = new javax.swing.JTabbedPane(); + tabResult = new javax.swing.JLayeredPane(); + pnlText = new javax.swing.JLayeredPane(); + lblMatchInfo = new javax.swing.JLabel(); + lblResultText = new javax.swing.JLabel(); + lblResultImage = new javax.swing.JLabel(); + tabStatistics = new javax.swing.JPanel(); + lblDurationGame = new javax.swing.JLabel(); + txtDurationGame = new javax.swing.JLabel(); + lblLife = new javax.swing.JLabel(); + txtLife = new javax.swing.JLabel(); + lblDurationMatch = new javax.swing.JLabel(); + txtDurationMatch = new javax.swing.JLabel(); + lblMatchScore = new javax.swing.JLabel(); + txtMatchScore = new javax.swing.JLabel(); + lblPlayerInfo = new javax.swing.JLabel(); + txtPlayerInfo = new javax.swing.JLabel(); + btnOk = new javax.swing.JButton(); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 100, Short.MAX_VALUE) + ); + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 100, Short.MAX_VALUE) + ); + + setTitle("Game end information"); + + pnlText.setBackground(new java.awt.Color(200, 100, 100)); + pnlText.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + pnlText.setOpaque(true); + + lblMatchInfo.setFont(new java.awt.Font("Tahoma", 3, 24)); // NOI18N + lblMatchInfo.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + lblMatchInfo.setText("matchInfo"); + lblMatchInfo.setBounds(11, 42, 550, 40); + pnlText.add(lblMatchInfo, javax.swing.JLayeredPane.DEFAULT_LAYER); + + lblResultText.setFont(new java.awt.Font("Tahoma", 3, 24)); // NOI18N + lblResultText.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + lblResultText.setText("result text"); + lblResultText.setBounds(11, 1, 550, 40); + pnlText.add(lblResultText, javax.swing.JLayeredPane.DEFAULT_LAYER); + + pnlText.setBounds(20, 150, 570, 90); + tabResult.add(pnlText, javax.swing.JLayeredPane.DEFAULT_LAYER); + + lblResultImage.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N + lblResultImage.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + lblResultImage.setBounds(0, 0, 610, 250); + tabResult.add(lblResultImage, javax.swing.JLayeredPane.DEFAULT_LAYER); + + tabPane.addTab("Result", tabResult); + + lblDurationGame.setText("Duration game:"); + + txtDurationGame.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + + lblLife.setText("Life at end:"); + + txtLife.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + + lblDurationMatch.setText("Duration match:"); + + txtDurationMatch.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + + lblMatchScore.setText("Match score:"); + + txtMatchScore.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + + lblPlayerInfo.setText("Player info:"); + + txtPlayerInfo.setBorder(javax.swing.BorderFactory.createEtchedBorder()); + + javax.swing.GroupLayout tabStatisticsLayout = new javax.swing.GroupLayout(tabStatistics); + tabStatistics.setLayout(tabStatisticsLayout); + tabStatisticsLayout.setHorizontalGroup( + tabStatisticsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(tabStatisticsLayout.createSequentialGroup() + .addGroup(tabStatisticsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(tabStatisticsLayout.createSequentialGroup() + .addContainerGap() + .addGroup(tabStatisticsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblPlayerInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblDurationMatch, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblMatchScore, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(tabStatisticsLayout.createSequentialGroup() + .addContainerGap() + .addGroup(tabStatisticsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblDurationGame, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(lblLife, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(tabStatisticsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(txtPlayerInfo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(txtDurationGame, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 489, Short.MAX_VALUE) + .addComponent(txtLife, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 489, Short.MAX_VALUE) + .addComponent(txtDurationMatch, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 489, Short.MAX_VALUE) + .addComponent(txtMatchScore, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 489, Short.MAX_VALUE)) + .addContainerGap()) + ); + tabStatisticsLayout.setVerticalGroup( + tabStatisticsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(tabStatisticsLayout.createSequentialGroup() + .addGroup(tabStatisticsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(lblDurationGame, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtDurationGame, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(tabStatisticsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(lblLife, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtLife, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(tabStatisticsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(lblDurationMatch, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtDurationMatch, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(tabStatisticsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(lblMatchScore, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtMatchScore, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(tabStatisticsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(lblPlayerInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(txtPlayerInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(99, Short.MAX_VALUE)) + ); + + tabPane.addTab("Statistics", tabStatistics); + + btnOk.setText("OK"); + btnOk.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnOkActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(btnOk) + .addContainerGap()) + .addGroup(layout.createSequentialGroup() + .addComponent(tabPane, javax.swing.GroupLayout.PREFERRED_SIZE, 626, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, Short.MAX_VALUE)) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(tabPane, javax.swing.GroupLayout.PREFERRED_SIZE, 277, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(btnOk) + .addGap(0, 25, Short.MAX_VALUE)) + ); + + pack(); + }// //GEN-END:initComponents + + private void btnOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnOkActionPerformed + this.removeDialog(); + }//GEN-LAST:event_btnOkActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton btnOk; + private javax.swing.JPanel jPanel2; + private javax.swing.JLabel lblDurationGame; + private javax.swing.JLabel lblDurationMatch; + private javax.swing.JLabel lblLife; + private javax.swing.JLabel lblMatchInfo; + private javax.swing.JLabel lblMatchScore; + private javax.swing.JLabel lblPlayerInfo; + private javax.swing.JLabel lblResultImage; + private javax.swing.JLabel lblResultText; + private javax.swing.JLayeredPane pnlText; + private javax.swing.JTabbedPane tabPane; + private javax.swing.JLayeredPane tabResult; + private javax.swing.JPanel tabStatistics; + private javax.swing.JLabel txtDurationGame; + private javax.swing.JLabel txtDurationMatch; + private javax.swing.JLabel txtLife; + private javax.swing.JLabel txtMatchScore; + private javax.swing.JLabel txtPlayerInfo; + // End of variables declaration//GEN-END:variables + +} diff --git a/Mage.Client/src/main/java/mage/client/dialog/MageDialog.java b/Mage.Client/src/main/java/mage/client/dialog/MageDialog.java index cac7b90cd95..21694f92aa5 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/MageDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/MageDialog.java @@ -40,6 +40,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.MouseEvent; import java.lang.reflect.InvocationTargetException; +import mage.client.MageFrame; /** * @@ -157,6 +158,11 @@ public class MageDialog extends javax.swing.JInternalFrame { this.setVisible(false); } + public void removeDialog() { + this.setVisible(false); + MageFrame.getDesktop().remove(this); + } + public void setTitelBarToolTip(final String text) { desktopIcon.setToolTipText(text); //tooltip on icon Component[] children = desktopIcon.getComponents(); diff --git a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java index b8738221bf3..1831240e0a5 100644 --- a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java +++ b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java @@ -51,6 +51,7 @@ import mage.view.DeckView; import mage.view.DraftClientMessage; import mage.view.DraftView; import mage.view.GameClientMessage; +import mage.view.GameEndView; import mage.view.GameView; import mage.view.TableClientMessage; import org.apache.log4j.Logger; @@ -240,6 +241,9 @@ public class CallbackClientImpl implements CallbackClient { panel.updateGame((GameView) callback.getData()); } } + else if (callback.getMethod().equals("endGameInfo")) { + MageFrame.getInstance().showGameEndDialog((GameEndView) callback.getData()); + } else if (callback.getMethod().equals("gameInform")) { if (callback.getMessageId() > messageId) { diff --git a/Mage.Client/src/main/java/mage/client/util/Format.java b/Mage.Client/src/main/java/mage/client/util/Format.java new file mode 100644 index 00000000000..d13423d58b8 --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/util/Format.java @@ -0,0 +1,76 @@ +/* +* Copyright 2011 BetaSteward_at_googlemail.com. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this list of +* conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, this list +* of conditions and the following disclaimer in the documentation and/or other materials +* provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR +* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* 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.client.util; + +import java.util.Date; + +/** + * + * @author LevelX2 + */ +public class Format { + + /** + * calculates the duration between two dates and returns a string in the format hhh:mm:ss + * + * @param fromDate - start date + * @param toDate - end date + * @return a string in the format hhh:mm:ss + */ + public static String getDuration(Date fromDate, Date toDate) { + if (fromDate == null || toDate == null || fromDate.getTime() > toDate.getTime()) { + return ""; + } + + return getDuration((toDate.getTime() - fromDate.getTime()) / 1000); + } + /** + * Converts seconds to a string with hours, minutes and seconds + * + * @param seconds - seconds of the duration + * @return a string in the format hhh:mm:ss + */ + public static String getDuration(long seconds) { + StringBuilder sb = new StringBuilder(); + long h = seconds / 3600; + seconds = seconds % 3600; + long m = seconds / 60; + long s = seconds % 60; + sb.append(h).append(":"); + if (m<10) { + sb.append("0"); + } + sb.append(m).append(":"); + if (s<10) { + sb.append("0"); + } + sb.append(s); + return sb.toString(); + } +} diff --git a/Mage.Client/src/main/resources/game_lost.jpg b/Mage.Client/src/main/resources/game_lost.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e2fcd36136dc6a92769c0b01108c3f30aff1f9f7 GIT binary patch literal 104725 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 F|JksGtBU{t literal 0 HcmV?d00001 diff --git a/Mage.Client/src/main/resources/game_won.jpg b/Mage.Client/src/main/resources/game_won.jpg new file mode 100644 index 0000000000000000000000000000000000000000..241f8952f131e3e5024d6cf4d3a12de963217a48 GIT binary patch literal 37838 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 players = new ArrayList(); + private Date startTime; + private Date endTime; + private String resultMessage; + private boolean won; + private MatchView matchView; + private int wins; + private int loses; + private int winsNeeded; + private String nameMatchWinner = null; + + public GameEndView(GameState state, Game game, UUID playerId, Match match) { + startTime = game.getStartTime(); + endTime = game.getEndTime(); + + // set result message + int winner = 0; + Player you = null; + for (Player player: state.getPlayers().values()) { + PlayerView playerView = new PlayerView(player, state, game); + if (playerView.getPlayerId().equals(playerId)) { + clientPlayer = playerView; + you = player; + } + players.add(playerView); + if (player.hasWon()) { + winner++; + } + } + if (you != null) { + won = you.hasWon(); + if (you.hasWon()) { + resultMessage = new StringBuilder("You won the game on turn ").append(game.getTurnNum()).append(".").toString(); + } else if (winner > 0) { + resultMessage = new StringBuilder("You lost the game on turn ").append(game.getTurnNum()).append(".").toString(); + } else { + resultMessage = new StringBuilder("Game is a draw on Turn ").append(game.getTurnNum()).append(".").toString(); + } + } + matchView = new MatchView(match); + + winsNeeded = match.getOptions().getWinsNeeded(); + for (MatchPlayer mPlayer: match.getPlayers()) { + if (mPlayer.getPlayer().equals(you)) { + wins = mPlayer.getWins(); + loses = mPlayer.getLoses(); + + } + if (mPlayer.getWins() == winsNeeded) { + nameMatchWinner = mPlayer.getPlayer().getName(); + } + } + + } + + public Date getStartTime() { + return startTime; + } + + public Date getEndTime() { + return endTime; + } + + public List getPlayers() { + return players; + } + + public String getResultMessage() { + return resultMessage; + } + + public boolean hasWon() { + return won; + } + + public MatchView getMatchView() { + return matchView; + } + + public int getWins() { + return wins; + } + + public int getLoses() { + return loses; + } + + public int getWinsNeeded() { + return winsNeeded; + } + + public String getNameMatchWinner() { + return nameMatchWinner; + } + + public PlayerView getClientPlayer() { + return clientPlayer; + } + +} diff --git a/Mage.Common/src/mage/view/PlayerView.java b/Mage.Common/src/mage/view/PlayerView.java index 9b10b0d376e..f549114171f 100644 --- a/Mage.Common/src/mage/view/PlayerView.java +++ b/Mage.Common/src/mage/view/PlayerView.java @@ -127,14 +127,17 @@ public class PlayerView implements Serializable { private boolean showInBattlefield(Permanent permanent, GameState state) { //show permanents controlled by player or attachments to permanents controlled by player - if (permanent.getAttachedTo() == null) + if (permanent.getAttachedTo() == null) { return permanent.getControllerId().equals(playerId); + } else { Permanent attachedTo = state.getPermanent(permanent.getAttachedTo()); - if (attachedTo != null) + if (attachedTo != null) { return attachedTo.getControllerId().equals(playerId); - else + } + else { return permanent.getControllerId().equals(playerId); + } } } diff --git a/Mage.Server/src/main/java/mage/server/TableController.java b/Mage.Server/src/main/java/mage/server/TableController.java index 11968b95327..c79af48f7ba 100644 --- a/Mage.Server/src/main/java/mage/server/TableController.java +++ b/Mage.Server/src/main/java/mage/server/TableController.java @@ -155,6 +155,10 @@ public class TableController { tournament.addPlayer(player, seat.getPlayerType()); table.joinTable(player, seat); User user = UserManager.getInstance().getUser(userId); + if (user == null) { + logger.fatal(new StringBuilder("couldn't get user ").append(name).append(" for join tornament userId = ").append(userId).toString()); + return false; + } user.addTable(player.getId(), table); logger.info("player joined " + player.getId()); //only inform human players and add them to sessionPlayerMap diff --git a/Mage.Server/src/main/java/mage/server/User.java b/Mage.Server/src/main/java/mage/server/User.java index 0fb03fa0a10..a87c4a061a5 100644 --- a/Mage.Server/src/main/java/mage/server/User.java +++ b/Mage.Server/src/main/java/mage/server/User.java @@ -160,6 +160,10 @@ public class User { fireCallback(new ClientCallback("showTournament", tournamentId)); } + public void showGameEndDialog(final UUID gameId) { + fireCallback(new ClientCallback("showGameEndDialog", gameId)); + } + public void watchGame(final UUID gameId) { fireCallback(new ClientCallback("watchGame", gameId)); } diff --git a/Mage.Server/src/main/java/mage/server/game/GameController.java b/Mage.Server/src/main/java/mage/server/game/GameController.java index b3abf298815..cd5b1610aab 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameController.java +++ b/Mage.Server/src/main/java/mage/server/game/GameController.java @@ -57,6 +57,7 @@ import mage.cards.repository.CardRepository; import mage.constants.Zone; import mage.game.Game; import mage.game.GameException; +import mage.game.Table; import mage.game.events.Listener; import mage.game.events.PlayerQueryEvent; import mage.game.events.TableEvent; @@ -141,6 +142,9 @@ public class GameController implements GameCallback { case ERROR: error(event.getMessage(), event.getException()); break; + case END_GAME_INFO: + endGameInfo(); + break; case INIT_TIMER: final UUID initPlayerId = event.getPlayerId(); if (initPlayerId == null) { @@ -475,6 +479,21 @@ public class GameController implements GameCallback { } } + private synchronized void endGameInfo() { + Table table = TableManager.getInstance().getTable(tableId); + if (table != null) { + if (table.getMatch() != null) { + for (final GameSession gameSession: gameSessions.values()) { + gameSession.endGameInfo(table.getMatch()); + } + } + } + // TODO: inform watchers +// for (final GameWatcher gameWatcher: watchers.values()) { +// gameWatcher.update(); +// } + } + private synchronized void ask(UUID playerId, final String question) throws MageException { perform(playerId, new Command() { @Override diff --git a/Mage.Server/src/main/java/mage/server/game/GameSession.java b/Mage.Server/src/main/java/mage/server/game/GameSession.java index 1eee2b538f3..28a5cfecae2 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameSession.java +++ b/Mage.Server/src/main/java/mage/server/game/GameSession.java @@ -36,6 +36,7 @@ import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import mage.cards.Cards; import mage.game.Game; +import mage.game.match.Match; import mage.interfaces.callback.ClientCallback; import mage.players.Player; import mage.players.net.UserData; @@ -160,6 +161,15 @@ public class GameSession extends GameWatcher { } } + public void endGameInfo(Match match) { + if (!killed) { + User user = UserManager.getInstance().getUser(userId); + if (user != null) { + user.fireCallback(new ClientCallback("endGameInfo", game.getId(), getGameEndView(playerId, match))); + } + } + } + private synchronized void setupTimeout() { if (!useTimeout) { return; diff --git a/Mage.Server/src/main/java/mage/server/game/GameWatcher.java b/Mage.Server/src/main/java/mage/server/game/GameWatcher.java index ac458181121..7193e82faa0 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameWatcher.java +++ b/Mage.Server/src/main/java/mage/server/game/GameWatcher.java @@ -38,6 +38,8 @@ import org.apache.log4j.Logger; import java.rmi.RemoteException; import java.util.UUID; +import mage.game.match.Match; +import mage.view.GameEndView; /** * @@ -124,5 +126,9 @@ public class GameWatcher { public GameView getGameView() { return new GameView(game.getState(), game); } + + public GameEndView getGameEndView(UUID playerId, Match match) { + return new GameEndView(game.getState(), game, playerId, match); + } } diff --git a/Mage/src/mage/game/Game.java b/Mage/src/mage/game/Game.java index cf8f6347d2c..45bc2de77ec 100644 --- a/Mage/src/mage/game/Game.java +++ b/Mage/src/mage/game/Game.java @@ -151,6 +151,7 @@ public interface Game extends MageItem, Serializable { void informPlayer(Player player, String message); void debugMessage(String message); void fireErrorEvent(String message, Exception ex); + void fireGameEndInfo(); //game event methods void fireEvent(GameEvent event); diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 7f9b7b84bb9..230784c941a 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -1551,6 +1551,15 @@ public abstract class GameImpl> implements Game, Serializa tableEventSource.fireTableEvent(EventType.UPDATE, null, this); } + @Override + public void fireGameEndInfo() { + if (simulation) { + return; + } + logger.trace("fireGameEndIfo"); + tableEventSource.fireTableEvent(EventType.END_GAME_INFO, null, this); + } + @Override public void fireErrorEvent(String message, Exception ex) { tableEventSource.fireTableEvent(EventType.ERROR, message, ex, this); diff --git a/Mage/src/mage/game/events/TableEvent.java b/Mage/src/mage/game/events/TableEvent.java index a359155095b..eaf2568a0c9 100644 --- a/Mage/src/mage/game/events/TableEvent.java +++ b/Mage/src/mage/game/events/TableEvent.java @@ -45,7 +45,7 @@ import mage.game.tournament.TournamentPairing; public class TableEvent extends EventObject implements ExternalEvent, Serializable { public enum EventType { - UPDATE, INFO, STATUS, REVEAL, LOOK, START_DRAFT, START_MATCH, SIDEBOARD, CONSTRUCT, SUBMIT_DECK, END, ERROR, + UPDATE, INFO, STATUS, START_DRAFT, START_MATCH, SIDEBOARD, CONSTRUCT, SUBMIT_DECK, END, END_GAME_INFO, ERROR, INIT_TIMER, RESUME_TIMER, PAUSE_TIMER } diff --git a/Mage/src/mage/game/match/MatchImpl.java b/Mage/src/mage/game/match/MatchImpl.java index 8df1ee07903..d44d7ac4b4a 100644 --- a/Mage/src/mage/game/match/MatchImpl.java +++ b/Mage/src/mage/game/match/MatchImpl.java @@ -208,6 +208,7 @@ public abstract class MatchImpl implements Match { } } } + game.fireGameEndInfo(); } @Override