summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/model/StoneTray.java
diff options
context:
space:
mode:
authorJannis Harder <harder@informatik.uni-luebeck.de>2011-05-02 02:00:50 +0200
committerJannis Harder <harder@informatik.uni-luebeck.de>2011-05-02 02:00:50 +0200
commitb89d29aac2eed38a0696eb2d81876e5c817f9327 (patch)
treed89b478d62b3d659259c433bd29845a6520ffa9c /src/jrummikub/model/StoneTray.java
parentd1eb2d241e9fa0f9a57fabf4b57e9960bd9588cb (diff)
downloadJRummikub-b89d29aac2eed38a0696eb2d81876e5c817f9327.tar
JRummikub-b89d29aac2eed38a0696eb2d81876e5c817f9327.zip
Refactored model to conform to the requested metrics
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@59 72836036-5685-4462-b002-a69064685172
Diffstat (limited to 'src/jrummikub/model/StoneTray.java')
-rw-r--r--src/jrummikub/model/StoneTray.java36
1 files changed, 23 insertions, 13 deletions
diff --git a/src/jrummikub/model/StoneTray.java b/src/jrummikub/model/StoneTray.java
index ff32153..0d48bf5 100644
--- a/src/jrummikub/model/StoneTray.java
+++ b/src/jrummikub/model/StoneTray.java
@@ -69,19 +69,8 @@ public class StoneTray<E extends Sizeable> implements
for (Pair<E, Position> i : objects) {
Position currentPosition = i.getSecond();
E currentObject = i.getFirst();
- // Tests if position is left of, above ... the current object
- if (position.getX() + object.getWidth() <= currentPosition.getX()) {
- continue;
- }
- if (position.getY() + object.getHeight() <= currentPosition.getY()) {
- continue;
- }
- if (position.getX() >= currentPosition.getX()
- + currentObject.getWidth()) {
- continue;
- }
- if (position.getY() >= currentPosition.getY()
- + currentObject.getHeight()) {
+ if (!objectsOverlap(object, position,
+ currentObject, currentPosition)) {
continue;
}
// Object would be placed inside the current object
@@ -114,6 +103,27 @@ public class StoneTray<E extends Sizeable> implements
objects.add(new Pair<E, Position>(object, position));
}
+ /** Tests whether two objects overlap **/
+ private boolean objectsOverlap(E object1, Position position1, E object2,
+ Position position2) {
+ // Tests if position is left of, above ... the current object
+ if (position1.getX() + object1.getWidth() <= position2.getX()) {
+ return false;
+ }
+ if (position1.getY() + object1.getHeight() <= position2.getY()) {
+ return false;
+ }
+ if (position1.getX() >= position2.getX()
+ + object2.getWidth()) {
+ return false;
+ }
+ if (position1.getY() >= position2.getY()
+ + object2.getHeight()) {
+ return false;
+ }
+ return true;
+ }
+
private Direction getMoveDirection(E object, Position position,
Pair<E, Position> blocking) {
boolean isVertical = getMoveOrientationn(object, position, blocking);