From 8c2e4a7d594028207f0bbf48890710856445c2b8 Mon Sep 17 00:00:00 2001 From: Ida Massow Date: Thu, 9 Jun 2011 00:11:26 +0200 Subject: Man kann den Timer einstellen git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@391 72836036-5685-4462-b002-a69064685172 --- src/jrummikub/control/SettingsControl.java | 8 +++++ src/jrummikub/control/TurnTimer.java | 11 ++++--- .../control/turn/AbstractTurnControl.java | 2 +- src/jrummikub/model/GameSettings.java | 30 +++++++++++------ src/jrummikub/view/IPlayerPanel.java | 2 +- src/jrummikub/view/ISettingsPanel.java | 4 +++ src/jrummikub/view/impl/PlayerPanel.java | 22 ++++++++----- src/jrummikub/view/impl/SettingsPanel.java | 38 ++++++++++++++-------- 8 files changed, 79 insertions(+), 38 deletions(-) (limited to 'src/jrummikub') diff --git a/src/jrummikub/control/SettingsControl.java b/src/jrummikub/control/SettingsControl.java index 8a8fd62..2589d88 100644 --- a/src/jrummikub/control/SettingsControl.java +++ b/src/jrummikub/control/SettingsControl.java @@ -121,6 +121,14 @@ public class SettingsControl { update(); } })); + connections.add(view.getSettingsPanel().getChangeTimeEvent() + .add(new IListener1() { + @Override + public void handle(Integer value) { + settings.setTime(value); + update(); + } + })); connections.add(view.getSettingsPanel().getChangeStoneColorsEvent() .add(new IListener1>() { @Override diff --git a/src/jrummikub/control/TurnTimer.java b/src/jrummikub/control/TurnTimer.java index 77c5b55..e64bc57 100644 --- a/src/jrummikub/control/TurnTimer.java +++ b/src/jrummikub/control/TurnTimer.java @@ -14,7 +14,8 @@ import jrummikub.view.IView; */ public class TurnTimer implements ActionListener, ITurnTimer { private IView view; - private int timeLeft = 60; + private int timeLeft; + private int totalTime; private Timer timer; private Event timeRunOutEvent = new Event(); @@ -24,12 +25,14 @@ public class TurnTimer implements ActionListener, ITurnTimer { * @param view * view to display */ - public TurnTimer(IView view) { + public TurnTimer(IView view, int totalTime) { this.view = view; + timeLeft = totalTime; + this.totalTime = totalTime; timer = new Timer(1000, this); timer.setRepeats(true); timer.setCoalesce(false); - view.getPlayerPanel().setTimeLeft(timeLeft); + view.getPlayerPanel().setTime(timeLeft, totalTime); } @Override @@ -45,7 +48,7 @@ public class TurnTimer implements ActionListener, ITurnTimer { @Override public void actionPerformed(ActionEvent arg0) { timeLeft--; - view.getPlayerPanel().setTimeLeft(timeLeft); + view.getPlayerPanel().setTime(timeLeft, totalTime); if (timeLeft == 0) { timer.stop(); timeRunOutEvent.emit(); diff --git a/src/jrummikub/control/turn/AbstractTurnControl.java b/src/jrummikub/control/turn/AbstractTurnControl.java index 84c478a..4838a08 100644 --- a/src/jrummikub/control/turn/AbstractTurnControl.java +++ b/src/jrummikub/control/turn/AbstractTurnControl.java @@ -52,7 +52,7 @@ public abstract class AbstractTurnControl implements ITurnControl { this.settings = settings; this.view = view; if (timer == null) { - timer = new TurnTimer(view); + timer = new TurnTimer(view, settings.getTime()); } connections.add(timer.getTimeRunOutEvent().add(new IListener() { @Override diff --git a/src/jrummikub/model/GameSettings.java b/src/jrummikub/model/GameSettings.java index 671b57c..42f76a6 100644 --- a/src/jrummikub/model/GameSettings.java +++ b/src/jrummikub/model/GameSettings.java @@ -23,6 +23,7 @@ public class GameSettings implements Serializable { private int highestValue; private int stoneSetNumber; private int numberOfStonesDealt; + private int time; private boolean noLimits; private HashSet stoneColors; @@ -36,9 +37,10 @@ public class GameSettings implements Serializable { highestValue = 13; stoneSetNumber = 2; numberOfStonesDealt = 14; + time = 60; noLimits = false; - stoneColors = new HashSet(Arrays.asList(BLACK, BLUE, ORANGE, - RED)); + stoneColors = new HashSet(Arrays.asList(BLACK, BLUE, + ORANGE, RED)); } /** @@ -54,7 +56,7 @@ public class GameSettings implements Serializable { * Sets the initial meld threshold * * @param value - * the value to set + * the value to set */ public void setInitialMeldThreshold(int value) { initialMeldThreshold = value; @@ -73,7 +75,7 @@ public class GameSettings implements Serializable { * Sets the points counted for a joker * * @param value - * the value to set + * the value to set */ public void setJokerPoints(int value) { jokerPoints = value; @@ -92,7 +94,7 @@ public class GameSettings implements Serializable { * Sets the number of jokers in game * * @param value - * how many jokers will be used + * how many jokers will be used */ public void setJokerNumber(int value) { jokerNumber = value; @@ -120,7 +122,7 @@ public class GameSettings implements Serializable { * Set the highest stone value in use * * @param highestValue - * highest stone value + * highest stone value */ public void setHighestValue(int highestValue) { this.highestValue = highestValue; @@ -139,12 +141,20 @@ public class GameSettings implements Serializable { * Set the number of sets of stones in use * * @param stoneSets - * sets of stones in use + * sets of stones in use */ public void setStoneSetNumber(int stoneSets) { this.stoneSetNumber = stoneSets; } + public int getTime() { + return time; + } + + public void setTime(int time) { + this.time = time; + } + /** * Use "No-Limits" rules * @@ -158,7 +168,7 @@ public class GameSettings implements Serializable { * Set whether "No-Limits" rules are used * * @param noLimits - * use no limit rules + * use no limit rules */ public void setNoLimits(boolean noLimits) { this.noLimits = noLimits; @@ -177,7 +187,7 @@ public class GameSettings implements Serializable { * Set stone colors used * * @param stoneColors - * used stone colors + * used stone colors */ public void setStoneColors(Set stoneColors) { this.stoneColors = new HashSet(stoneColors); @@ -196,7 +206,7 @@ public class GameSettings implements Serializable { * Set number of stones dealt at game start * * @param number - * how many Stones will be dealt initially + * how many Stones will be dealt initially */ public void setNumberOfStonesDealt(int number) { numberOfStonesDealt = number; diff --git a/src/jrummikub/view/IPlayerPanel.java b/src/jrummikub/view/IPlayerPanel.java index 75dbc60..6994456 100644 --- a/src/jrummikub/view/IPlayerPanel.java +++ b/src/jrummikub/view/IPlayerPanel.java @@ -13,7 +13,7 @@ public interface IPlayerPanel { * @param time * the time left */ - public void setTimeLeft(int time); + public void setTime(int time, int totalTime); /** * The sort by groups event is emitted when the player wants to sort his diff --git a/src/jrummikub/view/ISettingsPanel.java b/src/jrummikub/view/ISettingsPanel.java index a67d8b7..a63b3d1 100644 --- a/src/jrummikub/view/ISettingsPanel.java +++ b/src/jrummikub/view/ISettingsPanel.java @@ -6,6 +6,7 @@ import java.util.Set; import jrummikub.control.turn.TurnControlFactory; import jrummikub.model.GameSettings; import jrummikub.model.StoneColor; +import jrummikub.util.Event1; import jrummikub.util.IEvent; import jrummikub.util.IEvent1; import jrummikub.util.IEvent2; @@ -169,6 +170,8 @@ public interface ISettingsPanel { * @return the event */ public IEvent1 getChangeJokerNumberEvent(); + + public Event1 getChangeTimeEvent(); /** * Specifies the different kinds of settings errors that can be displayed @@ -191,4 +194,5 @@ public interface ISettingsPanel { /** Only computer players added */ COMPUTER_PLAYERS_ONLY_WARNING } + } \ No newline at end of file diff --git a/src/jrummikub/view/impl/PlayerPanel.java b/src/jrummikub/view/impl/PlayerPanel.java index d69323f..77a493c 100644 --- a/src/jrummikub/view/impl/PlayerPanel.java +++ b/src/jrummikub/view/impl/PlayerPanel.java @@ -69,7 +69,7 @@ class PlayerPanel extends JPanel implements IPlayerPanel { * Sets the current player name * * @param playerName - * the player name + * the player name */ void setCurrentPlayerName(String playerName) { currentPlayerNameLabel.setText(playerName); @@ -88,7 +88,8 @@ class PlayerPanel extends JPanel implements IPlayerPanel { } @Override - public void setTimeLeft(int time) { + public void setTime(int time, int totalTime) { + timeBar.setMaximum(totalTime); timeBar.setValue(time); timeBar.setString(Integer.toString(time / 60) + ":" + secondFormat.format(time % 60)); @@ -140,7 +141,8 @@ class PlayerPanel extends JPanel implements IPlayerPanel { leftPanel.add(hasLaidOutLabel); sortByGroupsButton = createButton(leftPanel, - "
Nach Sammlungen sortieren", new ActionListener() { + "
Nach Sammlungen sortieren", + new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { sortByGroupsEvent.emit(); @@ -161,8 +163,8 @@ class PlayerPanel extends JPanel implements IPlayerPanel { private void createRightPanel() { rightPanel = new JPanel(); rightPanel.setLayout(null); - rightPanel.setBorder(new EmptyBorder(SIDE_PANEL_INSET, SIDE_PANEL_INSET, - SIDE_PANEL_INSET, SIDE_PANEL_INSET)); + rightPanel.setBorder(new EmptyBorder(SIDE_PANEL_INSET, + SIDE_PANEL_INSET, SIDE_PANEL_INSET, SIDE_PANEL_INSET)); handRowUpButton = createButton(rightPanel, "
\u25B2", new ActionListener() { @@ -234,7 +236,8 @@ class PlayerPanel extends JPanel implements IPlayerPanel { private void rescale() { Insets insets = getInsets(); int x = insets.left, y = insets.top, width = getWidth() - insets.left - - insets.right, height = getHeight() - insets.top - insets.bottom; + - insets.right, height = getHeight() - insets.top + - insets.bottom; int boardWidth = hand.getWidth(); int handButtonWidth = (int) (width * HAND_ROW_BUTTON_RATIO); int meanPanelWidth = (width - boardWidth) / 2; @@ -243,8 +246,8 @@ class PlayerPanel extends JPanel implements IPlayerPanel { leftPanel.setBounds(x, y, leftPanelWidth, height); hand.setBounds(x + leftPanelWidth, y, boardWidth, height); - rightPanel.setBounds(x + leftPanelWidth + boardWidth, y, rightPanelWidth, - height); + rightPanel.setBounds(x + leftPanelWidth + boardWidth, y, + rightPanelWidth, height); leftPanel.validate(); rightPanel.validate(); @@ -252,7 +255,8 @@ class PlayerPanel extends JPanel implements IPlayerPanel { void updateButtons() { handRowUpButton.setEnabled(hand.canRowUp()); - handRowUpButton.setForeground(hand.canRowUp() ? Color.BLACK : Color.GRAY); + handRowUpButton.setForeground(hand.canRowUp() ? Color.BLACK + : Color.GRAY); handRowDownButton.setEnabled(hand.canRowDown()); handRowDownButton.setForeground(hand.canRowDown() ? Color.BLACK : Color.GRAY); diff --git a/src/jrummikub/view/impl/SettingsPanel.java b/src/jrummikub/view/impl/SettingsPanel.java index adacd79..8864b7b 100644 --- a/src/jrummikub/view/impl/SettingsPanel.java +++ b/src/jrummikub/view/impl/SettingsPanel.java @@ -75,6 +75,7 @@ class SettingsPanel extends JPanel implements ISettingsPanel { private JSpinner highestValueSpinner; private JSpinner numberOfStonesDealtSpinner; private JSpinner jokerNumberSpinner; + private JSpinner timeSpinner; private JPanel colorSelectionPanel; private Map colorButtons = new HashMap(); @@ -91,7 +92,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { private Event1 changeNumberOfStonesDealtEvent = new Event1(); private Event1 changeHighestValueEvent = new Event1(); private Event1> changeStoneColorsEvent = new Event1>(); - + private Event1 changeTimeEvent = new Event1(); + @Override public IEvent getStartGameEvent() { return startGameEvent; @@ -136,6 +138,21 @@ class SettingsPanel extends JPanel implements ISettingsPanel { public IEvent1 getChangeHighestValueEvent() { return changeHighestValueEvent; } + + @Override + public IEvent1 getChangeJokerNumberEvent() { + return changeJokerNumberEvent; + } + + @Override + public IEvent2 getChangePlayerTypeEvent() { + return changePlayerTypeEvent; + } + + @Override + public Event1 getChangeTimeEvent() { + return changeTimeEvent; + } @Override public IEvent1> getChangeStoneColorsEvent() { @@ -214,6 +231,7 @@ class SettingsPanel extends JPanel implements ISettingsPanel { highestValueSpinner.setValue(gameSettings.getHighestValue()); numberOfStonesDealtSpinner.setValue(gameSettings.getNumberOfStonesDealt()); jokerNumberSpinner.setValue(gameSettings.getJokerNumber()); + timeSpinner.setValue(gameSettings.getTime()); for (StoneColor color : StoneColor.values()) { colorButtons.get(color).getModel() @@ -300,13 +318,16 @@ class SettingsPanel extends JPanel implements ISettingsPanel { makeOptionLabel(4, "Jokeranzahl:"); jokerNumberSpinner = makeOptionSpinner(4, 1, 999, 1, changeJokerNumberEvent); + + makeOptionLabel(5, "Zeit für Spielzug:"); + timeSpinner = makeOptionSpinner(5, 1, 999, 1, changeTimeEvent); - makeOptionLabel(5, "Steinfarben:"); - createColorSelectionPanel(5); + makeOptionLabel(6, "Steinfarben:"); + createColorSelectionPanel(6); GridBagConstraints c = new GridBagConstraints(); c.gridx = 1; - c.gridy = 6; + c.gridy = 7; c.fill = GridBagConstraints.BOTH; c.weightx = 1; c.weighty = 1; @@ -601,13 +622,4 @@ class SettingsPanel extends JPanel implements ISettingsPanel { } } - @Override - public IEvent1 getChangeJokerNumberEvent() { - return changeJokerNumberEvent; - } - - @Override - public IEvent2 getChangePlayerTypeEvent() { - return changePlayerTypeEvent; - } } -- cgit v1.2.3