package game;
import game.deck.DeckFactory;
import game.stats.BankrollObserver;
import java.util.List;
import com.biotools.meerkat.GameObserver;
/**
* A Gamerunner will run a full simulation
*
*/
public interface GameRunner {
/**
* @param deckFactory factory for a deck. Each (possible) permutation of a game will retrieve a new Deck
* @param tableSeater
* @param gameIDGenerator
* @param gameObservers
*/
public void runGame(DeckFactory deckFactory, TableSeater tableSeater, GameIDGenerator gameIDGenerator, List<? extends GameObserver> gameObservers);
public PublicGameInfo asyncRunGame(DeckFactory deckFactory, TableSeater tableSeater, final GameIDGenerator gameIDGenerator,
List<? extends GameObserver> gameObservers);
/**
* adds a bankrollObserver that will be informed about bankroll-changes
* @param bankrollgraph
*/
public void addBankrollObserver(BankrollObserver bankrollgraph);
public void stopGame();
public void resumeGame();
public void terminateGame();
public boolean isRunning();
}