package cz.agents.agentpolis.tools.geovisio.spy.agentpolis;
import java.awt.Color;
import cz.agents.agentpolis.publictransport.simmodel.agent.driver.PublicTransportDriverAgent;
import cz.agents.agentpolis.simmodel.agent.Agent;
import cz.agents.agentpolis.tools.geovisio.layer.visparameter.VisParameterMapper;
import cz.agents.agentpolis.tools.geovisio.layer.visparameter.VisParameters;
import cz.agents.agentpolis.tools.geovisio.spy.agentpolis.agentstate.AgentState;
import cz.agents.agentpolis.tools.geovisio.spy.agentpolis.agentstate.AgentStateStorage;
/**
*
* @author Marek Cuchy
*
*/
public class AgentPolisVisParameterMapper implements VisParameterMapper {
private final AgentStateStorage agentStateStorage;
private final Class<? extends Agent> citizenClass;
public AgentPolisVisParameterMapper(AgentStateStorage agentStateStorage, Class<? extends Agent> citizenClass) {
super();
this.agentStateStorage = agentStateStorage;
this.citizenClass = citizenClass;
}
public VisParameters getVisParameter(Object object) {
if (citizenClass.equals(object.getClass())) {
AgentState state = agentStateStorage.getState(citizenClass.cast(object).getId());
if (state == null) {
return new VisParameters(Color.BLACK, 8);
}
Color color = Color.BLACK;
switch (state.getState()) {
case LOCATION:
color = Color.GREEN;
break;
case TRAVEL:
color = Color.CYAN;
break;
case WAITING:
color = Color.MAGENTA;
break;
}
return new VisParameters(color, 8);
}
if (object instanceof PublicTransportDriverAgent) {
return new VisParameters(Color.RED, 5);
}
return new VisParameters(Color.BLACK, 5);
}
}