package games.strategy.triplea.delegate.remote;
import java.util.Collection;
import games.strategy.engine.data.Territory;
import games.strategy.engine.data.Unit;
import games.strategy.triplea.delegate.dataObjects.PlaceableUnits;
public interface IAbstractPlaceDelegate extends IAbstractMoveDelegate {
/**
* @param units
* units to place.
* @param at
* territory to place
* @return an error code if the placement was not successful
*/
String placeUnits(Collection<Unit> units, Territory at, BidMode bidMode);
default String placeUnits(Collection<Unit> units, Territory at) {
return placeUnits(units, at, BidMode.NOT_BID);
}
enum BidMode {
BID, NOT_BID
}
/**
* Query what units can be produced in a given territory.
* ProductionResponse may indicate an error string that there
* can be no units placed in a given territory
*
* @param units
* place-able units
* @param at
* referring territory
* @return object that contains place-able units
*/
PlaceableUnits getPlaceableUnits(Collection<Unit> units, Territory at);
/**
* @return The number of placements made so far.
* this is not the number of units placed, but the number
* of times we have made successful placements.
*/
int getPlacementsMade();
/**
* Get what air units must move before the end of the players turn.
*
* @return a list of Territories with air units that must move
*/
Collection<Territory> getTerritoriesWhereAirCantLand();
}