Nur die besten Spiele ;3
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.

199 lines
4.9 KiB

  1. package solitaer;
  2. import java.awt.Component;
  3. import java.awt.event.MouseEvent;
  4. import javax.swing.SwingUtilities;
  5. import javax.swing.event.MouseInputListener;
  6. public class MyMouseListener implements MouseInputListener {
  7. private SaveStack saveStack;
  8. private BaseStack tempStack;
  9. private BaseStack selectedStack;
  10. private Card tempCard;
  11. public MyMouseListener(SaveStack _save) {
  12. // TODO Auto-generated constructor stub
  13. this.saveStack = _save;
  14. }
  15. @Override
  16. public void mouseClicked(MouseEvent e) {
  17. // TODO Auto-generated method stub
  18. }
  19. @Override
  20. public void mousePressed(MouseEvent e) {
  21. // TODO Auto-generated method stub
  22. System.out.println("DOWN");
  23. Component com = SwingUtilities.getDeepestComponentAt(e.getComponent(), e.getX(), e.getY());
  24. if ((com instanceof Card && com.getParent() instanceof StartStack)
  25. || (com instanceof StartStack && ((StartStack) com).stackIsEmpty())) {
  26. if (saveStack.stackIsEmpty()) {
  27. if (com instanceof Card && com.getParent() instanceof StartStack) {
  28. tempCard = (Card) com;
  29. tempStack = (StartStack) com.getParent();
  30. // Wenn faceDown, schau ob es die oberste Carde ist und dreh diese um
  31. if (!tempCard.isFaceUp()) {
  32. if (tempStack.peekLastCard().equals(tempCard)) {
  33. tempCard.setFaceUp(true);
  34. tempCard.repaint();
  35. }
  36. }
  37. // Card faceUp
  38. else {
  39. // move all Cards below the selected Card to Save
  40. int index = tempStack.indexOfCard(tempCard);
  41. while (tempStack.stackSize() - 1 >= index) {
  42. saveStack.addCard(tempStack.removeLastCard());
  43. }
  44. selectedStack = tempStack;
  45. }
  46. }
  47. }
  48. // saveStack is NOT empty
  49. else {
  50. if(com instanceof StartStack) {
  51. tempStack = (StartStack) com;
  52. } else {
  53. tempStack = (StartStack) com.getParent();
  54. }
  55. if (selectedStack == null) {
  56. System.out.println("ERROR selectedStack in StartStack");
  57. }
  58. if (tempStack.cardCheck(tempStack.peekLastCard(), saveStack.peekLastCard())) {
  59. clearSaveStack(tempStack);
  60. } else {
  61. clearSaveStack(selectedStack);
  62. }
  63. selectedStack = null;
  64. }
  65. }
  66. // AblageStack
  67. else if (com.getParent() instanceof AblageStack || com instanceof AblageStack) {
  68. System.out.println("AblageStack");
  69. if (com instanceof AblageStack) {
  70. tempStack = (AblageStack) com;
  71. } else {
  72. tempStack = (AblageStack) com.getParent();
  73. }
  74. if (saveStack.stackIsEmpty()) {
  75. // Move Top Card from AblageStack in Save
  76. if (tempStack.stackIsEmpty() == false) {
  77. saveStack.addCard(tempStack.removeLastCard());
  78. selectedStack = tempStack;
  79. }
  80. } else {
  81. // Move Card from Save in AblageStack
  82. if (saveStack.stackSize() == 1) {
  83. if (tempStack.cardCheck(tempStack.peekLastCard(), saveStack.peekLastCard())) {
  84. tempStack.addCard(saveStack.removeLastCard());
  85. }
  86. } else {
  87. // Clear Save
  88. clearSaveStack(selectedStack);
  89. }
  90. }
  91. }
  92. // GeberStack
  93. else if (com.getParent() instanceof GeberStack || com instanceof GeberStack) {
  94. System.out.println("GeberStack");
  95. if (com instanceof GeberStack) {
  96. tempStack = (GeberStack) com;
  97. } else {
  98. tempStack = (GeberStack) com.getParent();
  99. }
  100. if(this.saveStack.stackIsEmpty() == false) {
  101. clearSaveStack(selectedStack);
  102. }
  103. if (tempStack.stackIsEmpty()) {
  104. // Move all from Waste to Geber
  105. ((GeberStack) this.tempStack).swapWasteGeber();
  106. } else {
  107. // Move next card to Waste
  108. ((GeberStack) this.tempStack).moveToWaste();
  109. }
  110. }
  111. // WasteStack
  112. else if (com.getParent() instanceof WasteStack || com instanceof WasteStack) {
  113. System.out.println("WasteStack");
  114. if (com instanceof WasteStack) {
  115. tempStack = (WasteStack) com;
  116. } else {
  117. tempStack = (WasteStack) com.getParent();
  118. }
  119. if (saveStack.stackIsEmpty()) {
  120. // Move Top Card from AblageStack in Save
  121. if (tempStack.stackIsEmpty() == false) {
  122. saveStack.addCard(tempStack.removeLastCard());
  123. selectedStack = tempStack;
  124. }
  125. } else {
  126. clearSaveStack(selectedStack);
  127. }
  128. //Clear SaveStack click on SolitaerGamePanel
  129. }else if(com instanceof SolitaerGamePanel ||
  130. com.getParent() instanceof SolitaerGamePanel && com instanceof StartStack ){
  131. if(saveStack.stackIsEmpty() == false) {
  132. clearSaveStack(selectedStack);
  133. }
  134. }
  135. }
  136. private void clearSaveStack(BaseStack _ziel) {
  137. // Alles wieder auf den Ursprünglichen Stack packen
  138. while (!saveStack.stackIsEmpty()) {
  139. _ziel.addCard(saveStack.removeLastCard());
  140. }
  141. }
  142. @Override
  143. public void mouseReleased(MouseEvent e) {
  144. // TODO Auto-generated method stub
  145. }
  146. @Override
  147. public void mouseEntered(MouseEvent e) {
  148. // TODO Auto-generated method stub
  149. }
  150. @Override
  151. public void mouseExited(MouseEvent e) {
  152. // TODO Auto-generated method stub
  153. }
  154. @Override
  155. public void mouseDragged(MouseEvent e) {
  156. // TODO Auto-generated method stub
  157. }
  158. @Override
  159. public void mouseMoved(MouseEvent e) {
  160. // TODO Auto-generated method stub
  161. }
  162. }