/* 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;
import java.awt.GridLayout;
import javax.swing.JPanel;
import org.ojim.language.Localizer;
import org.ojim.logic.state.Player;
/**
* PlayerInfoWindow enthält die Spieler mit ihrem Geld und ihrem Status
*
*/
public class PlayerInfoWindow extends JPanel {
private static final int MAX_PLAYERS = 8;
// hält PlayerInfoField playerInfoField;
private PlayerInfoField[] playerInfoFields;
private Localizer language;
/**
* Initialisiert das PlayerInfoWindow
* @param language die Anzeigesprache
*/
public PlayerInfoWindow(Localizer language) {
this.language = language;
playerInfoFields = new PlayerInfoField[MAX_PLAYERS];
for(int i = 0; i < MAX_PLAYERS; i++){
playerInfoFields[i] = new PlayerInfoField(Player.NullPlayer, 0, language);
}
Player player = new Player("Test 1", 5, 5, 1, 0);
Player playerTwo = new Player("Test 2", 5, 5, 2, 1);
Player playerThree = new Player("Test 3", 5, 5, 3, 2);
Player playerFour = new Player("Test 4", 5, 5, 4, 3);
addPlayer(player, 500);
addPlayer(playerTwo, 501);
addPlayer(playerThree, 399);
addPlayer(playerFour, 222);
//System.out.println("Alles müsste da sein.");
}
/**
* Setzt eine neue Sprache
* @param language die neue Sprache
*/
public void setLanguage(Localizer language) {
this.language = language;
for (int i = 0; i < MAX_PLAYERS; i++) {
if (!playerInfoFields[i].isNull()) {
playerInfoFields[i].setLanguage(language);
}
}
draw();
}
/**
* Fügt einen neuen Spieler hinzu
* @param player das Spielerobjekt
* @param cash sein Kontostand
*/
public void addPlayer(Player player, int cash) {
//System.out.println("addPlayer");
if (findPlayer(player) == -1) {
//System.out.println(player.getId()+" nicht gefunden");
for (int i = 0; i < MAX_PLAYERS; i++) {
if (playerInfoFields[i].isNull()) {
//System.out.println(player.getId()+" mit id "+i+" hinzugefügt");
playerInfoFields[i] = new PlayerInfoField(player, cash, language);
break;
}
}
}
draw();
}
/**
* Zeichnet die Spieler
*/
private void draw() {
this.removeAll();
this.setLayout(new GridLayout(MAX_PLAYERS,0));
for (int i = 0; i < MAX_PLAYERS; i++) {
if(!playerInfoFields[i].isNull()){
this.add(playerInfoFields[i]);
}
//System.out.println("Player "+i+" wurde nun angeblich hinzugefügt!");
}
}
/**
* Entfernt einen Spieler
* @param player der zu entfernende Spieler
*/
public void removePlayer(Player player) {
int i = findPlayer(player);
for (int j = i; j <= MAX_PLAYERS; j++) {
playerInfoFields[j] = playerInfoFields[j + 1];
}
playerInfoFields[MAX_PLAYERS] = null;
draw();
}
/**
* Aktiviert einen Spieler
* @param player der zu aktivierende Spieler
*/
public void turnOn(Player player) {
for (int i = 0; i < MAX_PLAYERS; i++) {
if (playerInfoFields[i].isOn()) {
playerInfoFields[i].turnOff();
break;
}
}
int i = findPlayer(player);
playerInfoFields[i].turnOn();
draw();
}
/**
* Ändert den Geldbetrag eines Spielers
* @param player der Spieler dessen Geldbetrag geändert werden soll
* @param newCashValue der neue Geldbetrag
*/
public void changeCash(Player player, int newCashValue) {
int i = findPlayer(player);
playerInfoFields[i].changeCash(newCashValue);
draw();
}
/**
* Hilfsmethode um einen Spieler mit seinem Objekt zu finden
* @param player der gesuchte Spieler
* @return die ID des playerInfoFieldsarray (wenn nichts gefunden wurde -1)
*/
private int findPlayer(Player player) {
for (int i = 0; i < MAX_PLAYERS; i++) {
if (playerInfoFields[i].isPlayer(player)) {
return i;
}
}
return -1;
}
}