From a1c0cb89f67386738fc59426fd68737a393e1827 Mon Sep 17 00:00:00 2001 From: Jannis Harder Date: Wed, 25 May 2011 17:10:43 +0200 Subject: Added test and implementation for an inspection turn before the first turn git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@273 72836036-5685-4462-b002-a69064685172 --- src/jrummikub/control/RoundControl.java | 10 ++++++++-- src/jrummikub/control/TurnControl.java | 35 +++++++++++++++++++-------------- 2 files changed, 28 insertions(+), 17 deletions(-) (limited to 'src/jrummikub/control') diff --git a/src/jrummikub/control/RoundControl.java b/src/jrummikub/control/RoundControl.java index 91bf59b..ba61dfd 100644 --- a/src/jrummikub/control/RoundControl.java +++ b/src/jrummikub/control/RoundControl.java @@ -5,6 +5,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import jrummikub.model.GameState; import jrummikub.model.Hand; import jrummikub.model.IHand; import jrummikub.model.IPlayer; @@ -87,7 +88,7 @@ public class RoundControl { private void startTurn() { TurnControl turnControl = new TurnControl(roundState.getActivePlayer() - .getHand(), clonedTable, view); + .getHand(), clonedTable, view, roundState.getTurnNumber() < 1); connections.add(turnControl.getEndOfTurnEvent().add(new IListener() { @Override @@ -126,19 +127,24 @@ public class RoundControl { } private void endOfTurn() { - checkTurn(); + if (roundState.getTurnNumber() >= 1) { + checkTurn(); + } if (roundState.getLastPlayer() == null) { if (roundState.getGameHeap().getSize() == 0) { roundState.setLastPlayer(roundState.getNthNextPlayer(-1)); + roundState.nextTurn(); } else { roundState.nextPlayer(); + roundState.nextTurn(); } } else { if (roundState.getActivePlayer() == roundState.getLastPlayer()) { endOfRound(); } else { roundState.nextPlayer(); + roundState.nextTurn(); } } if (!roundFinished) { diff --git a/src/jrummikub/control/TurnControl.java b/src/jrummikub/control/TurnControl.java index 4140b57..9ce08b0 100644 --- a/src/jrummikub/control/TurnControl.java +++ b/src/jrummikub/control/TurnControl.java @@ -35,22 +35,27 @@ public class TurnControl { private Event endOfTurnEvent = new Event(); private List connections = new ArrayList(); + + private boolean inspectOnly; /** - * Create a new TurnControl using a given hand (of the active player), a given - * table and a given view for user interaction. + * Create a new TurnControl using a given hand (of the active player), a + * given table and a given view for user interaction. * * @param hand - * active player's hand + * active player's hand * @param table - * current table + * current table * @param view - * view for user interaction. + * view for user interaction. + * @param inspectOnly + * the current turn doesn't allow any table manipulation */ - public TurnControl(IHand hand, ITable table, IView view) { + public TurnControl(IHand hand, ITable table, IView view, boolean inspectOnly) { this.hand = hand; this.table = table; this.view = view; + this.inspectOnly = inspectOnly; this.timer = new TurnTimer(view); } @@ -60,6 +65,7 @@ public class TurnControl { this.table = table; this.view = view; this.timer = testTimer; + this.inspectOnly = false; } /** @@ -80,7 +86,8 @@ public class TurnControl { addHandPanelHandlers(); addStoneCollectionHandlers(); - addTablePanelHandlers(); + if (!inspectOnly) + addTablePanelHandlers(); connections.add(view.getPlayerPanel().getSortByGroupsEvent() .add(new IListener() { @@ -419,15 +426,12 @@ public class TurnControl { table.drop(joinedSet, newPos); } else { StoneSet joinedSet = new StoneSet(selectedStones).join(newSet); - table.drop(joinedSet, - new Position(newPos.getX() - selectedStones.size(), newPos.getY())); + table.drop(joinedSet, new Position(newPos.getX() + - selectedStones.size(), newPos.getY())); } } else { - table.drop( - new StoneSet(selectedStones), - new Position( - pos.getX() + (set.size() - selectedStones.size()) * 0.5f, pos - .getY())); + table.drop(new StoneSet(selectedStones), new Position(pos.getX() + + (set.size() - selectedStones.size()) * 0.5f, pos.getY())); } selectedStones.clear(); @@ -527,7 +531,8 @@ public class TurnControl { static class HandStonePositionComparator implements Comparator> { @Override - public int compare(Pair pair1, Pair pair2) { + public int compare(Pair pair1, + Pair pair2) { Position pos1 = pair1.getSecond(), pos2 = pair2.getSecond(); if (pos1.getY() < pos2.getY()) { return -1; -- cgit v1.2.3