summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/control/TurnControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/control/TurnControl.java')
-rw-r--r--src/jrummikub/control/TurnControl.java27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/jrummikub/control/TurnControl.java b/src/jrummikub/control/TurnControl.java
index 9ce08b0..1488c75 100644
--- a/src/jrummikub/control/TurnControl.java
+++ b/src/jrummikub/control/TurnControl.java
@@ -34,6 +34,7 @@ public class TurnControl {
private List<Stone> selectedStones = new ArrayList<Stone>();
private Event endOfTurnEvent = new Event();
+ private Event redealEvent = new Event();
private List<Connection> connections = new ArrayList<Connection>();
private boolean inspectOnly;
@@ -77,12 +78,19 @@ public class TurnControl {
@Override
public void handle() {
- endOfTurn();
+ endOfTurn(false);
}
};
connections.add(timer.getTimeRunOutEvent().add(endOfTurnListener));
connections.add(view.getPlayerPanel().getEndTurnEvent()
.add(endOfTurnListener));
+
+ connections.add(view.getPlayerPanel().getRedealEvent().add(new IListener() {
+ @Override
+ public void handle() {
+ endOfTurn(true);
+ }
+ }));
addHandPanelHandlers();
addStoneCollectionHandlers();
@@ -441,9 +449,13 @@ public class TurnControl {
view.setSelectedStones(selectedStones);
}
- private void endOfTurn() {
+ private void endOfTurn(boolean redeal) {
timer.stopTimer();
- endOfTurnEvent.emit();
+ if (redeal) {
+ redealEvent.emit();
+ } else {
+ endOfTurnEvent.emit();
+ }
for (Connection c : connections) {
c.remove();
}
@@ -549,5 +561,14 @@ public class TurnControl {
}
}
}
+
+ /**
+ * Emitted when the round is aborted and needs to be restarted
+ *
+ * @return the event
+ */
+ public Event getRedealEvent() {
+ return redealEvent;
+ }
}