/*
 * Copyright (c) 1995-1997 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Permission to use, copy, modify, and distribute this software
 * and its documentation for NON-COMMERCIAL purposes and without
 * fee is hereby granted provided that this copyright notice
 * appears in all copies. Please refer to the file "copyright.html"
 * for further important copyright and licensing information.
 *
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 */
package bingo.game;

import bingo.shared.*;

class BallAnnouncer extends Thread {

    private RingMaster ringMaster;

    BallAnnouncer(RingMaster ringMaster) {
        super("Bingo Ball Announcer");

	this.ringMaster = ringMaster;
    }

    public synchronized void run() {
        BagOfBalls bagOfBalls = (BagOfBalls)(new RandomBag());

        while (ringMaster.gameInProgress()) {
	    if (!ringMaster.isCheckingForWinner()) {
	        try {
		    ringMaster.announceBall(bagOfBalls.getNext());
	        } catch (NoMoreBallsException e) {
		    ringMaster.setGameOver();
	        }
	    }

	    try {
		wait(ringMaster.getGameParameters().getDelay());
	    } catch (InterruptedException e) { }
        }
    }
}
