51 lines
1.1 KiB
Java
Executable File
51 lines
1.1 KiB
Java
Executable File
package projectzombie.util.math.astar;
|
|
|
|
import gl_engine.MathHelpers;
|
|
import gl_engine.vec.Vec2i;
|
|
import projectzombie.util.math.TileState;
|
|
import projectzombie.world.layer.Layer;
|
|
|
|
public class AStarSearcher implements AStarSearch
|
|
{
|
|
private boolean crossUnwalkable;
|
|
private Layer layer;
|
|
|
|
public AStarSearcher(Layer layer, boolean crossUnwalkable) {
|
|
this.crossUnwalkable = crossUnwalkable;
|
|
this.layer = layer;
|
|
}
|
|
|
|
public AStarSearcher(Layer layer) {
|
|
this(layer, false);
|
|
}
|
|
|
|
@Override
|
|
public int getWeight(int x, int y)
|
|
{
|
|
Vec2i tpos = new Vec2i(x, y);
|
|
TileState tsf = layer.getFrontTile(tpos);
|
|
TileState tsb = layer.getBackTile(tpos);
|
|
|
|
if(!crossUnwalkable) {
|
|
if(!tsf.tile.tileWalkable || !tsb.tile.tileWalkable) {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if(tsf.tile.tileSolid || tsb.tile.tileSolid) {
|
|
return 100;
|
|
}
|
|
|
|
if(tsf.tile.tileHitbox > 0 || tsb.tile.tileHitbox > 0) {
|
|
return 100;
|
|
}
|
|
|
|
if(tsf.tile.slowness > 0 || tsb.tile.slowness > 0) {
|
|
return (int)(MathHelpers.biggest(tsf.tile.slowness, tsb.tile.slowness) * 100);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
}
|