Solved conflicts

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@189 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Ida Massow 2011-05-09 18:53:37 +02:00
parent f247b3666b
commit 3f8853b3e6
2 changed files with 51 additions and 12 deletions

View file

@ -1,6 +1,8 @@
package jrummikub.control;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import jrummikub.model.IHand;
@ -108,14 +110,14 @@ public class TurnControl {
.add(new IListener1<StoneSet>() {
@Override
public void handle(StoneSet set) {
leftConnectorClick(set);
connectorClick(set, false);
}
}));
connections.add(view.getTablePanel().getRightConnectorClickEvent()
.add(new IListener1<StoneSet>() {
@Override
public void handle(StoneSet set) {
rightConnectorClick(set);
connectorClick(set, true);
}
}));
@ -195,12 +197,45 @@ public class TurnControl {
view.setSelectedStones(selectedStones);
}
private void leftConnectorClick(StoneSet set) {
private void connectorClick(StoneSet set, boolean right) {
List<Stone> stones = new LinkedList<Stone>();
Position pos = table.getPosition(set);
for (Stone stone : set) {
stones.add(stone);
}
stones.removeAll(selectedStones);
if (right) {
Collections.reverse(stones);
}
pickUpSelectedStones();
StoneSet newSet = null;
for (Stone stone : stones) {
newSet = table.findStoneSet(stone);
if (newSet != null) {
break;
}
}
if (newSet != null) {
Position newPos = table.getPosition(newSet);
table.pickUp(newSet);
if (right) {
StoneSet joinedSet = newSet.join(new StoneSet(selectedStones));
table.drop(joinedSet, newPos);
} else {
StoneSet joinedSet = new StoneSet(selectedStones).join(newSet);
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()));
}
}
private void rightConnectorClick(StoneSet set) {
selectedStones.clear();
view.getTablePanel().setStoneSets(table);
view.getPlayerPanel().getHandPanel().setStones(hand);
view.setSelectedStones(selectedStones);
}
private void endOfTurn() {

View file

@ -552,8 +552,10 @@ public class TurnControlTest {
assertSame(newSet2.get(3), blackFour);
assertSame(newSet2.get(4), blackFive);
// versuche, links was wegzunehmen und wieder anzuhängen
mockView.tablePanel.stoneClickEvent.emit(redOne, false);
mockView.playerPanel.handPanel.stoneClickEvent.emit(blueFour, true);
mockView.playerPanel.handPanel.stoneClickEvent.emit(blueFour, false);
mockView.tablePanel.stoneClickEvent.emit(redOne, true);
mockView.tablePanel.leftConnectorClickEvent.emit(newSet2);
// handcheck
assertEquals(0, mockHand.getSize());
// tablecheck
@ -569,8 +571,8 @@ public class TurnControlTest {
assertEquals(7, newSet1.size());
// setcheck2
assertEquals(6, newSet2.size());
assertSame(newSet2.get(0), redOne);
assertSame(newSet2.get(1), blueFour);
assertSame(newSet2.get(0), blueFour);
assertSame(newSet2.get(1), redOne);
assertSame(newSet2.get(2), redThree);
assertSame(newSet2.get(3), blueTwo);
assertSame(newSet2.get(4), blackFour);
@ -666,8 +668,10 @@ public class TurnControlTest {
assertSame(newSet2.get(3), redOne);
assertSame(newSet2.get(4), redThree);
// versuche, rechts was wegzunehmen und wieder anzuhängen
mockView.tablePanel.stoneClickEvent.emit(redThree, false);
mockView.playerPanel.handPanel.stoneClickEvent.emit(blueFour, true);
mockView.playerPanel.handPanel.stoneClickEvent.emit(blueFour, false);
mockView.tablePanel.stoneClickEvent.emit(redThree, true);
mockView.tablePanel.rightConnectorClickEvent.emit(newSet2);
// handcheck
assertEquals(0, mockHand.getSize());
// tablecheck