package games.strategy.triplea.ai.proAI.simulate; import java.util.Properties; import games.strategy.engine.data.Change; import games.strategy.engine.data.CompositeChange; 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.DelegateHistoryWriter; import games.strategy.engine.history.IDelegateHistoryWriter; import games.strategy.engine.random.IRandomStats.DiceType; import games.strategy.engine.random.PlainRandomSource; import games.strategy.sound.HeadlessSoundChannel; import games.strategy.sound.ISound; import games.strategy.triplea.ai.proAI.ProAI; import games.strategy.triplea.delegate.MustFightBattle; import games.strategy.triplea.ui.display.HeadlessDisplay; import games.strategy.triplea.ui.display.ITripleADisplay; public class ProDummyDelegateBridge implements IDelegateBridge { private final PlainRandomSource m_randomSource = new PlainRandomSource(); private final ITripleADisplay m_display = new HeadlessDisplay(); private final ISound m_soundChannel = new HeadlessSoundChannel(); private final PlayerID m_player; private final ProAI m_proAI; private final DelegateHistoryWriter m_writer = new DelegateHistoryWriter(new ProDummyGameModifiedChannel()); private final GameData m_data; private final CompositeChange m_allChanges = new CompositeChange(); private MustFightBattle m_battle = null; public ProDummyDelegateBridge(final ProAI proAI, final PlayerID player, final GameData data) { m_proAI = proAI; m_data = data; m_player = player; } @Override public GameData getData() { return m_data; } @Override public void leaveDelegateExecution() {} @Override public Properties getStepProperties() { throw new UnsupportedOperationException(); } @Override public String getStepName() { throw new UnsupportedOperationException(); } @Override public IRemotePlayer getRemotePlayer(final PlayerID id) { return m_proAI; } @Override public IRemotePlayer getRemotePlayer() { return m_proAI; } @Override public int[] getRandom(final int max, final int count, final PlayerID player, final DiceType diceType, final String annotation) { return m_randomSource.getRandom(max, count, annotation); } @Override public int getRandom(final int max, final PlayerID player, final DiceType diceType, final String annotation) { return m_randomSource.getRandom(max, annotation); } @Override public PlayerID getPlayerID() { return m_player; } @Override public IDelegateHistoryWriter getHistoryWriter() { return m_writer; } @Override public IDisplay getDisplayChannelBroadcaster() { return m_display; } @Override public ISound getSoundChannelBroadcaster() { return m_soundChannel; } @Override public void enterDelegateExecution() {} @Override public void addChange(final Change aChange) { m_allChanges.add(aChange); m_data.performChange(aChange); } @Override public void stopGameSequence() {} public MustFightBattle getBattle() { return m_battle; } public void setBattle(final MustFightBattle battle) { m_battle = battle; } }