package de.uni.karlsruhe.aifb.prog2.chess; 

import Prog1Tools.GameModel;

/** Basisimplementierung fuer die Darstellung von Schachbrettern.
  * Laesst sich durch Bilden von Unterklassen anpassen.
  **/
public abstract class ChessboardDisplay implements GameModel {

  /** Das dargestellte Schachbrett */
  protected Chessboard chessboard;

  /** Konstruktor.
    * @param chessboard das darzustellende Schachbrett
    **/
  public ChessboardDisplay(Chessboard chessboard) {
    this.chessboard = chessboard;
  }  

  /** Gibt die Anzahl der Zeilen des Spielbretts
    * zurueck. Die Anzahl darf sich im Laufe des
    * Spieles nicht mehr veraendern.
    **/
  public int rows() {
    return chessboard.getNumOfRows();
  }

  /** Gibt die Anzahl der Spalten des Spielbretts
    * zurueck. Die Anzahl darf sich im Laufe des
    * Spieles nicht mehr veraendern.
    **/
  public int columns() {
    return chessboard.getNumOfColumns();
  }

  /** Gibt den Text zurueck, der aktuell auf dem
    * Feuer-Button stehen soll. Defaultwert ist NEXT MOVE
    **/
  public String getFireLabel() {
    return "NEXT MOVE";
  }

  /** Gibt den Text zurueck, der in der aktuellen
    * Runde im Meldefenster stehen soll. Defaultwert ist
    * ein leerer String.
    **/
  public String getMessages() {
    return "";
  }

  /** Gibt den Namen des Spieles als String zurueck.
    * Standardwert ist CHESS
    **/
  public String getGameName() {
    return "CHESS";
  }

  /** Gibt den aktuellen Inhalt eines bestimmten Feldes zurueck
    * @param row die Zeile, von 0 an gezaehlt
    * @param col die Zeile, von 0 an gezaehlt
    **/
  public char getContent(int row, int col) {
    Chessman chessman = chessboard.getContent(row,col);
    if (chessman == null)
      return ' ';
    return chessman.toChar();
  }

  /** Signalisiert, dass ein bestimmter Button gedrueckt wurde.
    * Standardimplementierung ist es, nichts zu tun.
    * @param row die Zeile, von 0 an gezaehlt
    * @param col die Zeile, von 0 an gezaehlt
    **/
  public void buttonPressed(int row,int col) {
  }
  
  /** Signalisert, dass der Feuer-Button gedrueckt wurde.
    * Standardimplementierung ist es, nichts zu tun.
    **/
  public void firePressed() {
  }
  
}