package pr2.collections.iterieren;

import de.smits_net.games.framework.board.Board;
import de.smits_net.games.framework.sprite.Sprite;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.Iterator;

/**
 * Spielfeld.
 */
public class GameBoard extends Board {

    /**
     * Anzahl der Münzen.
     */
    private static final int NUM_COINS = 1000;

    /**
     * Münzgenerator.
     */
    private final CoinGenerator generator;

    /**
     * Münzen auf dem Spielfeld.
     */
    private final Sprite[] coins = new Sprite[NUM_COINS];

    /**
     * Erzeugt ein neues Board.
     */
    public GameBoard() {
        // neues Spielfeld anlegen
        super(10, new Dimension(600, 600), Color.BLACK);

        generator = new CoinGenerator(this, NUM_COINS);

        int count = 0;
        Iterator<Sprite> it = generator.iterator();

        while (it.hasNext()) {
            coins[count++] = it.next();
        }
    }


    /**
     * Spielfeld neu zeichnen. Wird vom Framework aufgerufen.
     */
    @Override
    public synchronized void drawGame(Graphics g) {
        for (Sprite sprite : coins) {
            sprite.draw(g);
        }
    }

    /**
     * Spielsituation updaten. Wird vom Framework aufgerufen.
     */
    @Override
    public boolean updateGame() {
        return true;
    }
}
