package com.game.libgdx.roguelikeengine.pathing; import com.game.libgdx.roguelikeengine.Map; import com.game.libgdx.roguelikeengine.MovingTileOccupier; import com.game.libgdx.roguelikeengine.Tile; public class Pathing<T extends MovingTileOccupier> { protected boolean walking = false; protected Tile lastTile = null; private Map map; protected Tile walkTarget; public Pathing(Map map) { this.setMap(map); } public Path<T> getPath(Tile start, Tile end) { walkTarget=start; return new AStar<T>(getMap(), start, end); } public void walk(Path<T> path, T walker) { if(path.isCompletePath()) { boolean onTarget = (walker.getabsolutecolumn(map) == walkTarget.getcolumn() && walker.getabsoluterow(map) == walkTarget.getrow()); if(walkTarget == path.getEnd() && onTarget) { return; } else if(onTarget) { walkTarget = path.getNext(); } if(walkTarget.getcolumn() < walker.getabsolutecolumn(getMap())) { walker.goLeft(getMap()); } else if(walkTarget.getcolumn() > walker.getabsolutecolumn(getMap())) { walker.goRight(getMap()); } if(walkTarget.getrow() < walker.getabsoluterow(getMap())) { walker.goUp(getMap()); } else if(walkTarget.getrow() > walker.getabsoluterow(getMap())){ walker.goDown(getMap()); } } } public Map getMap() { return map; } public void setMap(Map map) { this.map = map; } }