package Export;
import AgentSystemPluginAPI.Contract.IAgentSystem;
import AgentSystemPluginAPI.Services.IAgent;
import EnvironmentPluginAPI.Exceptions.TechnicalException;
import EnvironmentPluginAPI.Service.IEnvironmentConfiguration;
import Factory.GameLogic.Enums.Direction;
import Factory.GameLogic.Enums.Faction;
import Factory.GameLogic.TransportTypes.TAction;
import Factory.GameLogic.TransportTypes.TActionsInTurn;
import Factory.GameLogic.TransportTypes.TGameState;
import Factory.GameLogic.TransportTypes.TUnit;
import Factory.GameLogic.Utility.GameInfos;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
/**
* Created with IntelliJ IDEA.
* User: N3trunner
* Date: 28.05.12
* Time: 16:47
* To change this template use File | Settings | File Templates.
*/
public class RandomAgentImplementation implements IAgentSystem<IEnvironmentConfiguration, TGameState, TActionsInTurn> {
private Faction ownFaction;
public RandomAgentImplementation() {
System.err.println("TGameState classloader im Plugin" + TGameState.class.getClassLoader());
}
@Override
public void start(IEnvironmentConfiguration faction) {
ownFaction = (Faction)faction;
}
@Override
public TActionsInTurn getActionsForEnvironmentStatus(TGameState tGameState) {
Random random = new Random();
List<TAction> actionList = new ArrayList<TAction>();
for(TUnit unit : GameInfos.getUnitsForFaction(tGameState, ownFaction)) {
List<Direction> legalDirections = GameInfos.getLegalDirectionForUnit(tGameState, unit);
if (legalDirections.size() > 0) {
Direction direction = legalDirections.get(random.nextInt(legalDirections.size()));
actionList.add(new TAction(unit, direction));
}
}
return new TActionsInTurn(actionList);
}
@Override
public void end() {
}
public List<IAgent> getInternalAgents() {
return new LinkedList<IAgent>();
}
}