/* Copyright (C) 2010 - 2011 Fabian Neundorf, Philip Caroli, * Maximilian Madlung, Usman Ghani Ahmed, Jeremias Mechler * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.ojim.client.gui.CardBar; import java.awt.GridBagLayout; import javax.swing.JPanel; import org.ojim.client.gui.GUIClient; import org.ojim.language.Localizer; import org.ojim.logic.state.fields.Field; /** * CardStack ist ein Kartenstapel der die Karten der Spielfelder des GUI * Spielers hält */ public class CardStack extends JPanel { // Hält Cards private Card[] cards; private static final int MAX_CARDS = 4; private org.ojim.logic.state.fields.FieldGroup fieldGroup; private Localizer language; /** * Initialisiert den Kartenstapel */ public CardStack() { super(); cards = new Card[MAX_CARDS]; for (int i = 0; i < MAX_CARDS; i++) { cards[i] = null; } draw(); } /** * fügt eine Karte zum Kartenstapel des Spielers hinzu * * @param card * das Spielfeld welches als Karte hinzugefügt werden soll */ public void addCard(org.ojim.logic.state.fields.BuyableField card, GUIClient gui) { for (int i = 0; i < MAX_CARDS; i++) { // System.out.println("Karte gesetztXXX"); if (cards[i] == null) { // System.out.println("Karte gesetzt"); cards[i] = new Card(gui); System.out.println(i+" ist eine neue Karte "+card.getName()); cards[i].setCard(card); this.fieldGroup = card.getFieldGroup(); break; } } // System.out.println("Karte gekauft;"); draw(); } /** * Entfernt eine Karte aus dem Kartenstapel sofern sie enthalten ist * * @param card * die zu entferndende Karte */ public void removeCard(org.ojim.logic.state.fields.BuyableField card, GUIClient gui) { int empty = -1; for (int i = 0; i < MAX_CARDS; i++) { if (cards[i].getCard().equals(card)) { cards[i].removeCard(); empty = i; break; } } if (empty != -1) { for (int i = empty; i < MAX_CARDS - 1; i++) { cards[i] = cards[i + 1]; } cards[MAX_CARDS - 1] = new Card(gui); } if (cards[0].getCard() != null) { setFieldGroupNull(); } draw(); } /** * Setzt die Sprache * * @param language * die neue Sprache */ public void setLanguage(Localizer language) { this.language = language; } /** * Zeichnet den Kartenstapel */ public void draw() { // this.setLayout(new CardStackLayout()); this.setLayout(new GridBagLayout()); for (int i = 0; i < MAX_CARDS; i++) { try { this.remove(cards[i]); cards[i].draw(); this.add(cards[i]); } catch (NullPointerException e) { } } } /** * Gibt die FieldGroup des Kartenstapels zurück * * @return die FieldGroup */ public org.ojim.logic.state.fields.FieldGroup getFieldGroup() { return fieldGroup; } /** * Setzt die FieldGroup des Kartenstapels auf Null */ public void setFieldGroupNull() { fieldGroup = null; } /** * Gibt zurück ob der Kartenstapel leer ist * * @return wenn er leer ist wahr */ public boolean isEmpty() { return (fieldGroup != null); } public void switchMortage(Field field) { for (int i = 0; i < cards.length; i++) { if (cards[i] != null) { cards[i].mortage(field); } } } }