/*
 *  CPS108 Spring 1998
 *  Boggle: BoggleView.java
 *  Brian Fan & Geoff Berry
 */

package boggle;

/**
 *  BoggleView - a Boggle GUI
 */

public interface BoggleView
{
    /**
     *  Setup the game
     */

    public abstract void setup();

    /**
     *  Return the player's name
     *  @return the player's name
     */

    public abstract String getName();

    /**
     *  Setup the list of opponents
     *  @param players the names of players participating (including self)
     */

    public abstract void setOpponents(String[] players);

    /**
     *  Start the waiting period for opponents to join
     *  @param seconds number of seconds the waiting period lasts
     */

    public abstract void startWaiting(int seconds);

    /**
     *  Countdown the seconds to game start
     *  @param seconds number of seconds in the countdown
     */

    public abstract void startCountdown(int seconds);

    /**
     *  Provides information for the boggle board
     *  @param board the boggle board
     */

    public abstract void initializeBoard(char[][] board);

    /**
     *  Start the game
     *  @param seconds number of seconds the game will last
     */

    public abstract void startGame(int seconds);

    /**
     *  End the game
     */

    public abstract void endGame();

    /**
     *  Returns the guesses made by the player during the game
     *  @return the array of words guessed
     */

    public abstract String[] getGuesses();

    /**
     *  Show a message from the game
     */

    public abstract void showMessage(String message);

    /**
     *  Show the results of the game
     *  @param winner the winner(s) of the game
     *  @param common words that were guessed more than once
     *  @param missed words that nobody guessed
     */

    public abstract void showResults(String[] winners, String[] common,
				     String[] missed);

    /**
     *  Mark the passing of one second of game time
     *  @param count the current tick count
     */

    public abstract void tick(int count);
}

