diff --git a/api/src/main/java/com/bartlomiejpluta/base/lib/ai/FollowEntityAI.java b/api/src/main/java/com/bartlomiejpluta/base/lib/ai/FollowEntityAI.java index 33f87f8e..50eddbf9 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/lib/ai/FollowEntityAI.java +++ b/api/src/main/java/com/bartlomiejpluta/base/lib/ai/FollowEntityAI.java @@ -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 implements AI { private final PathFinder finder; private final PathExecutor executor; private final N npc; - private final T target; + + @Setter(onParam = @__(@NonNull)) + private T target; private MovementPath path = null; diff --git a/api/src/main/java/com/bartlomiejpluta/base/lib/ai/KeepStraightDistanceAI.java b/api/src/main/java/com/bartlomiejpluta/base/lib/ai/KeepStraightDistanceAI.java index f2019026..f9f65419 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/lib/ai/KeepStraightDistanceAI.java +++ b/api/src/main/java/com/bartlomiejpluta/base/lib/ai/KeepStraightDistanceAI.java @@ -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 implements AI { private final N npc; - private final T target; + @Setter(onParam = @__(@NonNull)) + private T target; + private final PathFinder finder; private final PathExecutor executor; private final int minRange; @@ -131,7 +134,7 @@ public abstract class KeepStraightDistanceAI 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; } diff --git a/api/src/main/java/com/bartlomiejpluta/base/lib/ai/RunawayAI.java b/api/src/main/java/com/bartlomiejpluta/base/lib/ai/RunawayAI.java index b20edfa4..2483a00a 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/lib/ai/RunawayAI.java +++ b/api/src/main/java/com/bartlomiejpluta/base/lib/ai/RunawayAI.java @@ -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 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 implements AI { return; } - var direction = npc.getDirectionTowards(character).opposite(); + var direction = npc.getDirectionTowards(danger).opposite(); if (tryToMove(layer, direction)) { return; }