Remove player labels at the table edges

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@283 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Matthias Schiffer 2011-05-26 16:02:33 +02:00
parent cff3180460
commit 3d74d11974
8 changed files with 89 additions and 193 deletions

View file

@ -36,9 +36,9 @@ public class RoundControl {
* Create a new RoundControl using the given gameState and view
*
* @param roundState
* initial round state
* initial round state
* @param view
* view used for user interaction
* view used for user interaction
*/
public RoundControl(IRoundState roundState, IView view) {
this.roundState = roundState;
@ -75,14 +75,8 @@ public class RoundControl {
clonedTable = (ITable) roundState.getTable().clone();
view.enableStartTurnPanel(true);
view.getTablePanel().setStoneSets(clonedTable);
view.setCurrentPlayerName(roundState.getActivePlayer()
.getPlayerSettings().getName());
view.getTablePanel().setLeftPlayerName(
roundState.getNthNextPlayer(1).getPlayerSettings().getName());
view.getTablePanel().setTopPlayerName(
roundState.getNthNextPlayer(2).getPlayerSettings().getName());
view.getTablePanel().setRightPlayerName(
roundState.getNthNextPlayer(3).getPlayerSettings().getName());
view.setCurrentPlayerName(roundState.getActivePlayer().getPlayerSettings()
.getName());
}
private void startTurn() {
@ -103,10 +97,8 @@ public class RoundControl {
for (int i = 0; i < roundState.getPlayerCount(); i++) {
IHand hand = roundState.getNthNextPlayer(i).getHand();
for (int j = 0; j < 7; j++) {
hand.drop(roundState.getGameHeap().drawStone(), new Position(j,
0));
hand.drop(roundState.getGameHeap().drawStone(), new Position(j,
1));
hand.drop(roundState.getGameHeap().drawStone(), new Position(j, 0));
hand.drop(roundState.getGameHeap().drawStone(), new Position(j, 1));
}
}
}
@ -121,8 +113,7 @@ public class RoundControl {
}
return totalValue == 0
|| totalValue >= roundState.getGameSettings()
.getInitialMeldThreshold();
|| totalValue >= roundState.getGameSettings().getInitialMeldThreshold();
}
private void endOfTurn() {
@ -158,8 +149,7 @@ public class RoundControl {
}
if (!roundState.getActivePlayer().getLaidOut()) {
// Player touched forbidden stones
if (!tableSetDifference(clonedTable, roundState.getTable())
.isEmpty()) {
if (!tableSetDifference(clonedTable, roundState.getTable()).isEmpty()) {
rejectMove();
return;
}
@ -168,8 +158,7 @@ public class RoundControl {
return;
}
}
Set<Stone> tableDiff = tableDifference(roundState.getTable(),
clonedTable);
Set<Stone> tableDiff = tableDifference(roundState.getTable(), clonedTable);
roundState.setTable(clonedTable);
@ -185,8 +174,7 @@ public class RoundControl {
}
private void rejectMove() {
Set<Stone> tableDiff = tableDifference(roundState.getTable(),
clonedTable);
Set<Stone> tableDiff = tableDifference(roundState.getTable(), clonedTable);
// deal penalty, reset
roundState.getGameHeap().putBack(tableDiff);
dealPenalty(tableDiff.size());
@ -258,7 +246,8 @@ public class RoundControl {
boolean foundRegularWinner = false;
int winnerPlayerNumber = 0;
Pair<Integer, Integer> bestScore = new Pair<Integer, Integer>(Integer.MIN_VALUE, Integer.MAX_VALUE);
Pair<Integer, Integer> bestScore = new Pair<Integer, Integer>(
Integer.MIN_VALUE, Integer.MAX_VALUE);
int pointSum = 0;
for (int i = 0; i < roundState.getPlayerCount(); i++) {
IPlayer player = roundState.getNthPlayer(i);
@ -276,9 +265,9 @@ public class RoundControl {
} else {
stonePoints = playerHand.getStonePoints();
}
bestScore = updateBestScore(bestScore, -stonePoints, playerHand.getSize());
points.add(-stonePoints);
pointSum += stonePoints;
}
@ -287,7 +276,8 @@ public class RoundControl {
points.set(winnerPlayerNumber, pointSum);
} else {
for (int i = 0; i < roundState.getPlayerCount(); i++) {
if (bestScore.equals(new Pair<Integer, Integer>(points.get(i), roundState.getNthPlayer(i).getHand().getSize()))) {
if (bestScore.equals(new Pair<Integer, Integer>(points.get(i),
roundState.getNthPlayer(i).getHand().getSize()))) {
winners.set(i, true);
}
}
@ -298,7 +288,8 @@ public class RoundControl {
private static Pair<Integer, Integer> updateBestScore(
Pair<Integer, Integer> bestScore, int stonePoints, int size) {
if (bestScore.getFirst() == stonePoints) {
return new Pair<Integer, Integer>(stonePoints, Math.min(bestScore.getSecond(), size));
return new Pair<Integer, Integer>(stonePoints, Math.min(
bestScore.getSecond(), size));
} else if (bestScore.getFirst() < stonePoints) {
return new Pair<Integer, Integer>(stonePoints, size);
}