package Factory.GameLogic;
import EnvironmentPluginAPI.Contract.IActionDescription;
import EnvironmentPluginAPI.Contract.IEnvironment;
import EnvironmentPluginAPI.Contract.IEnvironmentState;
import EnvironmentPluginAPI.Exceptions.CorruptConfigurationFileException;
import EnvironmentPluginAPI.Exceptions.IllegalNumberOfClientsException;
import EnvironmentPluginAPI.Exceptions.TechnicalException;
import EnvironmentPluginAPI.Service.ICycleStatisticsSaver;
import EnvironmentPluginAPI.TransportTypes.TMARLAClientInstance;
import EnvironmentPluginAPI.TransportTypes.TMapMetaData;
import Factory.GameLogic.Enums.Direction;
import Factory.GameLogic.TransportTypes.TUnit;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: TwiG
* Date: 13.05.12
* Time: 19:32
* To change this template use File | Settings | File Templates.
*/
public class GameLogicComponent implements IEnvironment<TMapMetaData, IEnvironmentState, IActionDescription> {
// ------------------------------ FIELDS ------------------------------
private GameLogicUseCase useCase;
// --------------------------- CONSTRUCTORS ---------------------------
public GameLogicComponent(ICycleStatisticsSaver saveGameStatistics) {
this.useCase = new GameLogicUseCase(saveGameStatistics);
}
// ------------------------ INTERFACE METHODS ------------------------
// --------------------- Interface IGameLogic ---------------------
public List<TMapMetaData> getAvailableMaps() throws CorruptConfigurationFileException, TechnicalException {
return useCase.getAvailableMaps();
}
public void saveMap(TMapMetaData map) throws TechnicalException {
useCase.saveMap(map);
}
@Override
public IEnvironmentState start(List<TMARLAClientInstance> players, TMapMetaData iEnvironmentConfiguration) throws TechnicalException, IllegalNumberOfClientsException {
return useCase.start(players, iEnvironmentConfiguration);
}
@Override
public boolean isStillActive() {
return useCase.isStillActive();
}
@Override
public TMARLAClientInstance getActiveInstance() {
return useCase.getActiveInstance();
}
@Override
public IEnvironmentState getCurrentEnvironmentState() throws TechnicalException {
return useCase.getCurrentEnvironmentState();
}
@Override
public IEnvironmentState executeAction(IActionDescription actionsInTurn) throws TechnicalException {
return useCase.executeAction(actionsInTurn);
}
public void endTurn() throws TechnicalException {
useCase.endTurn();
}
@Override
public void end() throws TechnicalException {
useCase.end();
}
public void moveUnit(TUnit unitBlue, Direction right) throws TechnicalException {
useCase.moveUnit(unitBlue, right);
}
}