Add support for changing target/danger of built-in AI strategies
This commit is contained in:
@@ -9,13 +9,16 @@ import com.bartlomiejpluta.base.util.path.MovementPath;
|
||||
import com.bartlomiejpluta.base.util.path.PathExecutor;
|
||||
import com.bartlomiejpluta.base.util.pathfinder.PathFinder;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
|
||||
public abstract class FollowEntityAI<N extends NPC, T extends Entity> implements AI {
|
||||
|
||||
private final PathFinder finder;
|
||||
private final PathExecutor<N> executor;
|
||||
private final N npc;
|
||||
private final T target;
|
||||
|
||||
@Setter(onParam = @__(@NonNull))
|
||||
private T target;
|
||||
|
||||
private MovementPath<N> path = null;
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.bartlomiejpluta.base.util.path.MovementPath;
|
||||
import com.bartlomiejpluta.base.util.path.PathExecutor;
|
||||
import com.bartlomiejpluta.base.util.pathfinder.PathFinder;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
import org.joml.Vector2i;
|
||||
import org.joml.Vector2ic;
|
||||
|
||||
@@ -16,7 +17,9 @@ import java.util.ArrayList;
|
||||
|
||||
public abstract class KeepStraightDistanceAI<N extends NPC, T extends Entity> implements AI {
|
||||
private final N npc;
|
||||
private final T target;
|
||||
@Setter(onParam = @__(@NonNull))
|
||||
private T target;
|
||||
|
||||
private final PathFinder finder;
|
||||
private final PathExecutor<N> executor;
|
||||
private final int minRange;
|
||||
@@ -131,7 +134,7 @@ public abstract class KeepStraightDistanceAI<N extends NPC, T extends Entity> im
|
||||
// we abandon finding another path and start to interact
|
||||
for (var position : consideredPositions) {
|
||||
if (npc.getCoordinates().equals(position)) {
|
||||
npc.setFaceDirection(npc.getDirectionTowards(this.target));
|
||||
npc.setFaceDirection(npc.getDirectionTowards(target));
|
||||
interact(npc, target, layer, dt);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -5,18 +5,19 @@ import com.bartlomiejpluta.base.api.ai.NPC;
|
||||
import com.bartlomiejpluta.base.api.entity.Entity;
|
||||
import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer;
|
||||
import com.bartlomiejpluta.base.api.move.Direction;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class RunawayAI<N extends NPC, T extends Entity> implements AI {
|
||||
@NonNull
|
||||
private final N npc;
|
||||
|
||||
@NonNull
|
||||
private final T character;
|
||||
@Setter(onParam = @__(@NonNull))
|
||||
private T danger;
|
||||
|
||||
private final Random random = new Random();
|
||||
|
||||
@@ -26,7 +27,7 @@ public class RunawayAI<N extends NPC, T extends Entity> implements AI {
|
||||
return;
|
||||
}
|
||||
|
||||
var direction = npc.getDirectionTowards(character).opposite();
|
||||
var direction = npc.getDirectionTowards(danger).opposite();
|
||||
if (tryToMove(layer, direction)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user