package games.strategy.triplea.ai.weakAI;
import games.strategy.engine.data.Change;
import games.strategy.engine.data.GameData;
import games.strategy.engine.data.PlayerID;
import games.strategy.engine.data.ResourceCollection;
import games.strategy.engine.data.changefactory.ChangeFactory;
import games.strategy.engine.delegate.IDelegateBridge;
import games.strategy.triplea.ai.AbstractAI;
import games.strategy.triplea.delegate.remote.IAbstractForumPosterDelegate;
import games.strategy.triplea.delegate.remote.IAbstractPlaceDelegate;
import games.strategy.triplea.delegate.remote.IMoveDelegate;
import games.strategy.triplea.delegate.remote.IPurchaseDelegate;
import games.strategy.triplea.delegate.remote.ITechDelegate;
public class DoesNothingAI extends AbstractAI {
public DoesNothingAI(final String name, final String type) {
super(name, type);
}
@Override
protected void purchase(final boolean purchaseForBid, final int PUsToSpend, final IPurchaseDelegate purchaseDelegate,
final GameData data, final PlayerID player) {
// spend whatever we have
if (!player.getResources().isEmpty()) {
(new WeakAI(this.getName(), this.getType())).purchase(purchaseForBid, PUsToSpend, purchaseDelegate, data, player);
}
pause();
}
@Override
protected void tech(final ITechDelegate techDelegate, final GameData data, final PlayerID player) {
pause();
}
@Override
protected void move(final boolean nonCombat, final IMoveDelegate moveDel, final GameData data,
final PlayerID player) {
pause();
}
@Override
protected void place(final boolean placeForBid, final IAbstractPlaceDelegate placeDelegate, final GameData data,
final PlayerID player) {
// place whatever we have
if (!player.getUnits().isEmpty()) {
(new WeakAI(this.getName(), this.getType())).place(placeForBid, placeDelegate, data, player);
}
pause();
}
@Override
public void politicalActions() {
pause();
}
@Override
protected void endTurn(final IAbstractForumPosterDelegate endTurnForumPosterDelegate, final GameData data,
final PlayerID player) {
// destroy whatever we have
final ResourceCollection resourceCollection = player.getResources();
final Change removeChange = ChangeFactory.removeResourceCollection(player, resourceCollection);
// shameless cheating... (do NOT do this, normally you are never supposed to access the IDelegateBridge from outside
// of a delegate)
final IDelegateBridge bridge = endTurnForumPosterDelegate.getBridge();
// resourceCollection is not yet a valid renderingObject
bridge.getHistoryWriter().startEvent(player.getName() + " removes resources: " + resourceCollection, null);
bridge.addChange(removeChange);
}
@Override
public boolean acceptAction(final PlayerID playerSendingProposal, final String acceptanceQuestion,
final boolean politics) {
return true;
}
}