package games.strategy.triplea.delegate;
import java.util.Properties;
import games.strategy.engine.data.Change;
import games.strategy.engine.data.GameData;
import games.strategy.engine.data.PlayerID;
import games.strategy.engine.delegate.IDelegateBridge;
import games.strategy.engine.display.IDisplay;
import games.strategy.engine.gamePlayer.IRemotePlayer;
import games.strategy.engine.history.IDelegateHistoryWriter;
import games.strategy.engine.random.IRandomStats.DiceType;
import games.strategy.sound.ISound;
/**
* TripleA implementation of DelegateBridge.
*/
public class GameDelegateBridge implements IDelegateBridge {
private final IDelegateBridge m_bridge;
private final GameDelegateHistoryWriter m_historyWriter;
/**
* Creates new TripleADelegateBridge to wrap an existing IDelegateBridge.
*
* @param bridge
* delegate bridge
*/
public GameDelegateBridge(final IDelegateBridge bridge) {
m_bridge = bridge;
m_historyWriter = new GameDelegateHistoryWriter(m_bridge.getHistoryWriter(), getData());
}
@Override
public GameData getData() {
return m_bridge.getData();
}
/**
* Return our custom historyWriter instead of the default one.
*/
@Override
public IDelegateHistoryWriter getHistoryWriter() {
return m_historyWriter;
}
@Override
public PlayerID getPlayerID() {
return m_bridge.getPlayerID();
}
/**
* All delegates should use random data that comes from both players so that
* neither player cheats.
*/
@Override
public int getRandom(final int max, final PlayerID player, final DiceType diceType, final String annotation) {
return m_bridge.getRandom(max, player, diceType, annotation);
}
/**
* Delegates should not use random data that comes from any other source.
*/
@Override
public int[] getRandom(final int max, final int count, final PlayerID player, final DiceType diceType,
final String annotation) {
return m_bridge.getRandom(max, count, player, diceType, annotation);
}
@Override
public void addChange(final Change aChange) {
m_bridge.addChange(aChange);
}
@Override
public String getStepName() {
return m_bridge.getStepName();
}
@Override
public IRemotePlayer getRemotePlayer() {
return m_bridge.getRemotePlayer();
}
@Override
public IRemotePlayer getRemotePlayer(final PlayerID id) {
return m_bridge.getRemotePlayer(id);
}
@Override
public IDisplay getDisplayChannelBroadcaster() {
return m_bridge.getDisplayChannelBroadcaster();
}
@Override
public ISound getSoundChannelBroadcaster() {
return m_bridge.getSoundChannelBroadcaster();
}
@Override
public Properties getStepProperties() {
return m_bridge.getStepProperties();
}
@Override
public void leaveDelegateExecution() {
m_bridge.leaveDelegateExecution();
}
@Override
public void enterDelegateExecution() {
m_bridge.enterDelegateExecution();
}
@Override
public void stopGameSequence() {
m_bridge.stopGameSequence();
}
}