Abstract turn control has player, doesn't need hand
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@372 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
257ce0ba95
commit
561409f0d9
4 changed files with 22 additions and 28 deletions
|
@ -1,7 +1,6 @@
|
||||||
package jrummikub.control.turn;
|
package jrummikub.control.turn;
|
||||||
|
|
||||||
import jrummikub.model.GameSettings;
|
import jrummikub.model.GameSettings;
|
||||||
import jrummikub.model.IHand;
|
|
||||||
import jrummikub.model.IPlayer;
|
import jrummikub.model.IPlayer;
|
||||||
import jrummikub.model.ITable;
|
import jrummikub.model.ITable;
|
||||||
import jrummikub.util.Event;
|
import jrummikub.util.Event;
|
||||||
|
@ -17,7 +16,6 @@ public abstract class AbstractTurnControl implements ITurnControl {
|
||||||
protected Event redealEvent = new Event();
|
protected Event redealEvent = new Event();
|
||||||
protected GameSettings settings;
|
protected GameSettings settings;
|
||||||
protected IPlayer player;
|
protected IPlayer player;
|
||||||
protected IHand hand;
|
|
||||||
protected ITable table;
|
protected ITable table;
|
||||||
protected IView view;
|
protected IView view;
|
||||||
protected TurnMode turnMode;
|
protected TurnMode turnMode;
|
||||||
|
@ -37,7 +35,6 @@ public abstract class AbstractTurnControl implements ITurnControl {
|
||||||
IView view, TurnMode turnMode) {
|
IView view, TurnMode turnMode) {
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.hand = player.getHand();
|
|
||||||
this.table = table;
|
this.table = table;
|
||||||
this.view = view;
|
this.view = view;
|
||||||
this.turnMode = turnMode;
|
this.turnMode = turnMode;
|
||||||
|
|
|
@ -77,14 +77,14 @@ public class BaseAIControl extends AbstractTurnControl {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Stone findMatchingStone(Stone target) {
|
private Stone findMatchingStone(Stone target) {
|
||||||
for (Pair<Stone, Position> entry : hand) {
|
for (Pair<Stone, Position> entry : player.getHand()) {
|
||||||
Stone stone = entry.getFirst();
|
Stone stone = entry.getFirst();
|
||||||
if (stone.getValue() == target.getValue()
|
if (stone.getValue() == target.getValue()
|
||||||
&& stone.getColor() == target.getColor()) {
|
&& stone.getColor() == target.getColor()) {
|
||||||
return stone;
|
return stone;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (Pair<Stone, Position> entry : hand) {
|
for (Pair<Stone, Position> entry : player.getHand()) {
|
||||||
Stone stone = entry.getFirst();
|
Stone stone = entry.getFirst();
|
||||||
if (stone.isJoker()) {
|
if (stone.isJoker()) {
|
||||||
return stone;
|
return stone;
|
||||||
|
@ -95,14 +95,14 @@ public class BaseAIControl extends AbstractTurnControl {
|
||||||
|
|
||||||
private Stone pickUpMatchingStone(Stone target) {
|
private Stone pickUpMatchingStone(Stone target) {
|
||||||
Stone match = findMatchingStone(target);
|
Stone match = findMatchingStone(target);
|
||||||
hand.pickUp(match);
|
player.getHand().pickUp(match);
|
||||||
return match;
|
return match;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void turn() {
|
private void turn() {
|
||||||
List<Stone> stones = new ArrayList<Stone>();
|
List<Stone> stones = new ArrayList<Stone>();
|
||||||
|
|
||||||
for (Pair<Stone, Position> entry : hand) {
|
for (Pair<Stone, Position> entry : player.getHand()) {
|
||||||
stones.add(entry.getFirst());
|
stones.add(entry.getFirst());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,8 +147,8 @@ public class BaseAIControl extends AbstractTurnControl {
|
||||||
|
|
||||||
private void emitEndOfTurn() {
|
private void emitEndOfTurn() {
|
||||||
long timeElapsed = System.currentTimeMillis() - startTime;
|
long timeElapsed = System.currentTimeMillis() - startTime;
|
||||||
long timeNeeded = Math.min((long) (1000 + Math.random() * hand.getSize()
|
long timeNeeded = Math.min((long) (1000 + Math.random()
|
||||||
* 100), 50000);
|
* player.getHand().getSize() * 100), 50000);
|
||||||
long waitTime = timeNeeded - timeElapsed;
|
long waitTime = timeNeeded - timeElapsed;
|
||||||
|
|
||||||
if (waitTime > 0) {
|
if (waitTime > 0) {
|
||||||
|
|
|
@ -76,8 +76,8 @@ public class HumanTurnControl extends AbstractTurnControl {
|
||||||
if (turnMode == TurnMode.NORMAL_TURN) {
|
if (turnMode == TurnMode.NORMAL_TURN) {
|
||||||
addTablePanelHandlers();
|
addTablePanelHandlers();
|
||||||
}
|
}
|
||||||
|
|
||||||
view.getHandPanel().setStones(hand.clone());
|
view.getHandPanel().setStones(player.getHand().clone());
|
||||||
view.getHandPanel().resetCurrentRow();
|
view.getHandPanel().resetCurrentRow();
|
||||||
view.setBottomPanel(BottomPanelType.HUMAN_HAND_PANEL);
|
view.setBottomPanel(BottomPanelType.HUMAN_HAND_PANEL);
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ public class HumanTurnControl extends AbstractTurnControl {
|
||||||
private void handClick(Position pos) {
|
private void handClick(Position pos) {
|
||||||
List<Stone> handStones = new ArrayList<Stone>();
|
List<Stone> handStones = new ArrayList<Stone>();
|
||||||
for (Stone s : selectedStones) {
|
for (Stone s : selectedStones) {
|
||||||
if (hand.pickUp(s)) {
|
if (player.getHand().pickUp(s)) {
|
||||||
handStones.add(s);
|
handStones.add(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -235,27 +235,27 @@ public class HumanTurnControl extends AbstractTurnControl {
|
||||||
for (Stone s : handStones) {
|
for (Stone s : handStones) {
|
||||||
float x = Math.max(0,
|
float x = Math.max(0,
|
||||||
Math.min(13, pos.getX() - handStones.size() / 2.0f + i));
|
Math.min(13, pos.getX() - handStones.size() / 2.0f + i));
|
||||||
hand.drop(s, new Position(x, (float) Math.floor(pos.getY())));
|
player.getHand().drop(s, new Position(x, (float) Math.floor(pos.getY())));
|
||||||
selectedStones.remove(s);
|
selectedStones.remove(s);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
view.setSelectedStones(selectedStones);
|
view.setSelectedStones(selectedStones);
|
||||||
view.getHandPanel().setStones(hand);
|
view.getHandPanel().setStones(player.getHand());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sortStones(Comparator<Stone> comparator) {
|
private void sortStones(Comparator<Stone> comparator) {
|
||||||
List<Stone> stones = new ArrayList<Stone>();
|
List<Stone> stones = new ArrayList<Stone>();
|
||||||
for (Pair<Stone, Position> entry : hand) {
|
for (Pair<Stone, Position> entry : player.getHand()) {
|
||||||
stones.add(entry.getFirst());
|
stones.add(entry.getFirst());
|
||||||
}
|
}
|
||||||
for (Stone stone : stones) {
|
for (Stone stone : stones) {
|
||||||
hand.pickUp(stone);
|
player.getHand().pickUp(stone);
|
||||||
}
|
}
|
||||||
|
|
||||||
Collections.sort(stones, comparator);
|
Collections.sort(stones, comparator);
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
for (Stone stone : stones) {
|
for (Stone stone : stones) {
|
||||||
hand.drop(stone, new Position(x, y));
|
player.getHand().drop(stone, new Position(x, y));
|
||||||
x++;
|
x++;
|
||||||
if (x >= Hand.WIDTH) {
|
if (x >= Hand.WIDTH) {
|
||||||
x = 0;
|
x = 0;
|
||||||
|
@ -263,7 +263,7 @@ public class HumanTurnControl extends AbstractTurnControl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
view.getHandPanel().setStones(hand);
|
view.getHandPanel().setStones(player.getHand());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sortByRuns() {
|
private void sortByRuns() {
|
||||||
|
@ -304,7 +304,7 @@ public class HumanTurnControl extends AbstractTurnControl {
|
||||||
|
|
||||||
private void pickUpSelectedStones() {
|
private void pickUpSelectedStones() {
|
||||||
for (Stone stone : selectedStones) {
|
for (Stone stone : selectedStones) {
|
||||||
hand.pickUp(stone);
|
player.getHand().pickUp(stone);
|
||||||
table.pickUpStone(stone);
|
table.pickUpStone(stone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -320,7 +320,7 @@ public class HumanTurnControl extends AbstractTurnControl {
|
||||||
selectedStones.clear();
|
selectedStones.clear();
|
||||||
|
|
||||||
view.getTablePanel().setStoneSets(table);
|
view.getTablePanel().setStoneSets(table);
|
||||||
view.getHandPanel().setStones(hand);
|
view.getHandPanel().setStones(player.getHand());
|
||||||
view.setSelectedStones(selectedStones);
|
view.setSelectedStones(selectedStones);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,7 +380,7 @@ public class HumanTurnControl extends AbstractTurnControl {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<Pair<Stone, Position>> handPairs = new ArrayList<Pair<Stone, Position>>();
|
List<Pair<Stone, Position>> handPairs = new ArrayList<Pair<Stone, Position>>();
|
||||||
for (Pair<Stone, Position> entry : hand) {
|
for (Pair<Stone, Position> entry : player.getHand()) {
|
||||||
handPairs.add(entry);
|
handPairs.add(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,17 +436,15 @@ public class HumanTurnControl extends AbstractTurnControl {
|
||||||
new Position(newPos.getX() - selectedStones.size(), newPos.getY()));
|
new Position(newPos.getX() - selectedStones.size(), newPos.getY()));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
table.drop(
|
table.drop(new StoneSet(selectedStones),
|
||||||
new StoneSet(selectedStones),
|
new Position(pos.getX() + (set.getSize() - selectedStones.size())
|
||||||
new Position(
|
* 0.5f, pos.getY()));
|
||||||
pos.getX() + (set.getSize() - selectedStones.size()) * 0.5f, pos
|
|
||||||
.getY()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedStones.clear();
|
selectedStones.clear();
|
||||||
|
|
||||||
view.getTablePanel().setStoneSets(table);
|
view.getTablePanel().setStoneSets(table);
|
||||||
view.getHandPanel().setStones(hand);
|
view.getHandPanel().setStones(player.getHand());
|
||||||
view.setSelectedStones(selectedStones);
|
view.setSelectedStones(selectedStones);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package jrummikub.control.turn;
|
package jrummikub.control.turn;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
import static org.junit.Assert.assertFalse;
|
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
|
||||||
|
|
Reference in a new issue