package net.sf.colossus.client;
import java.util.List;
import net.sf.colossus.game.Battle;
import net.sf.colossus.game.BattlePhase;
import net.sf.colossus.game.Engagement;
import net.sf.colossus.game.Legion;
import net.sf.colossus.game.Player;
/**
* Knows a lot of things, but cannot actually take any actions.
*
* Everything returned by this interface must be immutable, or a copy.
* An attempt to reduce the God-class nature of Client.
*
* TODO this should be replaced with classes from the game package, mostly
* Game itself
*
* @author David Ripton
*/
public interface IOracle
{
Battle getBattleCS();
Engagement getEngagement();
int getTurnNumber();
List<String> getLegionImageNames(Legion legion);
List<Boolean> getLegionCreatureCertainties(Legion legion);
// TODO: the sole function of this seems to be avoiding premature content
// rendering in StatusScreen, which doesn't seem a good reason for this
// method
int getNumPlayers();
Player getActivePlayer();
Player getBattleActivePlayer();
BattlePhase getBattlePhase();
}