1 package cz.cuni.amis.pogamut.ut2004.agent.navigation.astar; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 import java.util.List; 6 7 import cz.cuni.amis.pogamut.base.agent.IObservingAgent; 8 import cz.cuni.amis.pogamut.base.agent.module.SensorModule; 9 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPoint; 10 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPointNeighbourLink; 11 import cz.cuni.amis.utils.astar.AStarMap; 12 import cz.cuni.amis.utils.maps.LazyMap; 13 14 public class UT2004AStarMap extends SensorModule<IObservingAgent> implements AStarMap<NavPoint> { 15 16 private LazyMap<NavPoint, List<NavPoint>> neighbours = new LazyMap<NavPoint, List<NavPoint>>() { 17 18 @Override 19 protected List<NavPoint> create(NavPoint key) { 20 List<NavPoint> list = new ArrayList<NavPoint>(key.getOutgoingEdges().size()); 21 for (NavPointNeighbourLink link : key.getOutgoingEdges().values()) { 22 list.add(link.getToNavPoint()); 23 } 24 return list; 25 } 26 27 }; 28 29 public UT2004AStarMap(IObservingAgent agent) { 30 super(agent); 31 } 32 33 @Override 34 protected void cleanUp() { 35 super.cleanUp(); 36 neighbours.clear(); 37 } 38 39 @Override 40 public int getEdgeCost(NavPoint nodeFrom, NavPoint nodeTo) { 41 return (int) nodeTo.getLocation().getDistance(nodeFrom.getLocation()); 42 } 43 44 @Override 45 public Collection<NavPoint> getNodeNeighbours(NavPoint node) { 46 return neighbours.get(node); 47 } 48 49 @Override 50 public int getNodeCost(NavPoint node) { 51 return 0; 52 } 53 54 }