package solitaer; import java.util.ArrayList; import javax.swing.JPanel; public abstract class BaseStack extends JPanel { public final int IMAGE_WIDTH = 72; public final int IMAGE_HIGHT = 96; public final int STACK_HIGHT = 450; private static final long serialVersionUID = 1L; private ArrayList stack = new ArrayList(); private final int OFFSET_VALUE = 20; private int offset; private int addOffset; public BaseStack(boolean _offset) { // TODO Auto-generated constructor stub if(_offset) { addOffset = OFFSET_VALUE; }else { addOffset = 0; } offset = 0; } public void clearStack() { stack.clear(); offset = 0; RenderStackNew(); } public boolean stackIsEmpty() { return stack.isEmpty(); } public Card peekLastCard() { if(!stackIsEmpty()) { return stack.get(stack.size()-1); } else { return null; } } public int indexOfCard(Card _card) { return stack.indexOf(_card); } public int stackSize() { return stack.size(); } public void addCard(Card _card) { _card.setLocation(0, offset); stack.add(_card); RenderStackNew(); offset += addOffset; } public Card removeLastCard() { if (stack.size() != 0) { Card LastCard = stack.remove(stack.size() - 1); offset -= addOffset; RenderStackNew(); return LastCard; } return null; } private void RenderStackNew() { this.removeAll(); // Alles neu Zeichnen for (int i = stack.size() - 1; i >= 0; i--) { this.add(stack.get(i)); } this.repaint(); } protected abstract boolean cardCheck(Card _topStack, Card _playerCard); }