diff options
-rw-r--r-- | mock/jrummikub/view/MockPlayerPanel.java | 2 | ||||
-rw-r--r-- | src/jrummikub/control/SettingsControl.java | 8 | ||||
-rw-r--r-- | src/jrummikub/control/TurnTimer.java | 11 | ||||
-rw-r--r-- | src/jrummikub/control/turn/AbstractTurnControl.java | 2 | ||||
-rw-r--r-- | src/jrummikub/model/GameSettings.java | 30 | ||||
-rw-r--r-- | src/jrummikub/view/IPlayerPanel.java | 2 | ||||
-rw-r--r-- | src/jrummikub/view/ISettingsPanel.java | 4 | ||||
-rw-r--r-- | src/jrummikub/view/impl/PlayerPanel.java | 22 | ||||
-rw-r--r-- | src/jrummikub/view/impl/SettingsPanel.java | 38 |
9 files changed, 80 insertions, 39 deletions
diff --git a/mock/jrummikub/view/MockPlayerPanel.java b/mock/jrummikub/view/MockPlayerPanel.java index 497e445..fa263c0 100644 --- a/mock/jrummikub/view/MockPlayerPanel.java +++ b/mock/jrummikub/view/MockPlayerPanel.java @@ -22,7 +22,7 @@ public class MockPlayerPanel implements IPlayerPanel { public TurnMode turnMode; @Override - public void setTimeLeft(int time) { + public void setTime(int time) { // TODO Auto-generated method stub } 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<Integer>() { + @Override + public void handle(Integer value) { + settings.setTime(value); + update(); + } + })); connections.add(view.getSettingsPanel().getChangeStoneColorsEvent() .add(new IListener1<Set<StoneColor>>() { @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<StoneColor> stoneColors; @@ -36,9 +37,10 @@ public class GameSettings implements Serializable { highestValue = 13; stoneSetNumber = 2; numberOfStonesDealt = 14; + time = 60; noLimits = false; - stoneColors = new HashSet<StoneColor>(Arrays.asList(BLACK, BLUE, ORANGE, - RED)); + stoneColors = new HashSet<StoneColor>(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<StoneColor> stoneColors) { this.stoneColors = new HashSet<StoneColor>(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<Integer> getChangeJokerNumberEvent(); + + public Event1<Integer> 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, - "<html><center>Nach Sammlungen sortieren", new ActionListener() { + "<html><center>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, "<html><center>\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<StoneColor, JToggleButton> colorButtons = new HashMap<StoneColor, JToggleButton>(); @@ -91,7 +92,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel { private Event1<Integer> changeNumberOfStonesDealtEvent = new Event1<Integer>(); private Event1<Integer> changeHighestValueEvent = new Event1<Integer>(); private Event1<Set<StoneColor>> changeStoneColorsEvent = new Event1<Set<StoneColor>>(); - + private Event1<Integer> changeTimeEvent = new Event1<Integer>(); + @Override public IEvent getStartGameEvent() { return startGameEvent; @@ -136,6 +138,21 @@ class SettingsPanel extends JPanel implements ISettingsPanel { public IEvent1<Integer> getChangeHighestValueEvent() { return changeHighestValueEvent; } + + @Override + public IEvent1<Integer> getChangeJokerNumberEvent() { + return changeJokerNumberEvent; + } + + @Override + public IEvent2<Integer, Type> getChangePlayerTypeEvent() { + return changePlayerTypeEvent; + } + + @Override + public Event1<Integer> getChangeTimeEvent() { + return changeTimeEvent; + } @Override public IEvent1<Set<StoneColor>> 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<Integer> getChangeJokerNumberEvent() { - return changeJokerNumberEvent; - } - - @Override - public IEvent2<Integer, Type> getChangePlayerTypeEvent() { - return changePlayerTypeEvent; - } } |