You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
4.4 KiB
183 lines
4.4 KiB
package solitaer;
|
|
|
|
import java.awt.Component;
|
|
import java.awt.event.MouseEvent;
|
|
|
|
import javax.swing.SwingUtilities;
|
|
import javax.swing.event.MouseInputListener;
|
|
|
|
public class MyMouseListener implements MouseInputListener {
|
|
|
|
private SaveStack saveStack;
|
|
private BaseStack tempStack;
|
|
private BaseStack selectedStack;
|
|
private Card tempCard;
|
|
|
|
public MyMouseListener(SaveStack _save) {
|
|
// TODO Auto-generated constructor stub
|
|
this.saveStack = _save;
|
|
}
|
|
|
|
@Override
|
|
public void mouseClicked(MouseEvent e) {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
|
|
@Override
|
|
public void mousePressed(MouseEvent e) {
|
|
// TODO Auto-generated method stub
|
|
System.out.println("DOWN");
|
|
Component com = SwingUtilities.getDeepestComponentAt(e.getComponent(), e.getX(), e.getY());
|
|
|
|
// Leeres StartFeld
|
|
if (com instanceof StartStack) {
|
|
System.out.println("Leer Start");
|
|
|
|
}
|
|
// Karte, die in einem StartStack liegt
|
|
else if (com instanceof Card && com.getParent() instanceof StartStack) {
|
|
tempCard = (Card) com;
|
|
tempStack = (StartStack) com.getParent();
|
|
|
|
if (saveStack.stackIsEmpty()) {
|
|
// Wenn faceDown, schau ob es die oberste Carde ist und dreh diese um
|
|
if (!tempCard.isFaceUp()) {
|
|
if (tempStack.peekLastCard().equals(tempCard)) {
|
|
tempCard.setFaceUp(true);
|
|
tempCard.repaint();
|
|
}
|
|
}
|
|
// Card faceUp
|
|
else {
|
|
// move all Cards below the selected Card to Save
|
|
int index = tempStack.indexOfCard(tempCard);
|
|
while (tempStack.stackSize() - 1 >= index) {
|
|
saveStack.addCard(tempStack.removeLastCard());
|
|
}
|
|
selectedStack = tempStack;
|
|
|
|
}
|
|
}
|
|
// saveStack is NOT empty
|
|
else {
|
|
if (selectedStack == null) {
|
|
System.out.println("ERROR selectedStack in StartStack");
|
|
}
|
|
if (tempStack.cardCheck(tempStack.peekLastCard(), saveStack.peekLastCard())) {
|
|
clearSaveStack(tempStack);
|
|
} else {
|
|
clearSaveStack(selectedStack);
|
|
}
|
|
|
|
selectedStack = null;
|
|
}
|
|
}
|
|
// AblageStack
|
|
else if (com.getParent() instanceof AblageStack || com instanceof AblageStack) {
|
|
|
|
System.out.println("AblageStack");
|
|
|
|
if (com instanceof AblageStack) {
|
|
tempStack = (AblageStack) com;
|
|
} else {
|
|
tempStack = (AblageStack) com.getParent();
|
|
}
|
|
|
|
if (saveStack.stackIsEmpty()) {
|
|
// Move Top Card from AblageStack in Save
|
|
if (tempStack.stackIsEmpty() == false) {
|
|
saveStack.addCard(tempStack.removeLastCard());
|
|
selectedStack = tempStack;
|
|
}
|
|
|
|
} else {
|
|
// Move Card from Save in AblageStack
|
|
if (saveStack.stackSize() == 1) {
|
|
if (tempStack.cardCheck(tempStack.peekLastCard(), saveStack.peekLastCard())) {
|
|
tempStack.addCard(saveStack.removeLastCard());
|
|
}
|
|
|
|
} else {
|
|
// Clear Save
|
|
clearSaveStack(selectedStack);
|
|
}
|
|
}
|
|
|
|
}
|
|
// GeberStack
|
|
else if (com.getParent() instanceof GeberStack || com instanceof GeberStack) {
|
|
System.out.println("GeberStack");
|
|
if (com instanceof GeberStack) {
|
|
tempStack = (GeberStack) com;
|
|
} else {
|
|
tempStack = (GeberStack) com.getParent();
|
|
}
|
|
if (tempStack.stackIsEmpty()) {
|
|
// Move all from Waste to Geber
|
|
((GeberStack) this.tempStack).swapWasteGeber();
|
|
} else {
|
|
// Move next card to Waste
|
|
((GeberStack) this.tempStack).moveToWaste();
|
|
}
|
|
}
|
|
// WasteStack
|
|
else if (com.getParent() instanceof WasteStack || com instanceof WasteStack) {
|
|
System.out.println("WasteStack");
|
|
if (com instanceof WasteStack) {
|
|
tempStack = (WasteStack) com;
|
|
} else {
|
|
tempStack = (WasteStack) com.getParent();
|
|
}
|
|
|
|
if (saveStack.stackIsEmpty()) {
|
|
// Move Top Card from AblageStack in Save
|
|
if (tempStack.stackIsEmpty() == false) {
|
|
saveStack.addCard(tempStack.removeLastCard());
|
|
selectedStack = tempStack;
|
|
}
|
|
|
|
} else {
|
|
clearSaveStack(selectedStack);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void clearSaveStack(BaseStack _ziel) {
|
|
// Alles wieder auf den Ursprünglichen Stack packen
|
|
while (!saveStack.stackIsEmpty()) {
|
|
_ziel.addCard(saveStack.removeLastCard());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void mouseReleased(MouseEvent e) {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
|
|
@Override
|
|
public void mouseEntered(MouseEvent e) {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
|
|
@Override
|
|
public void mouseExited(MouseEvent e) {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
|
|
@Override
|
|
public void mouseDragged(MouseEvent e) {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
|
|
@Override
|
|
public void mouseMoved(MouseEvent e) {
|
|
// TODO Auto-generated method stub
|
|
|
|
}
|
|
|
|
}
|