From edf5a50f0527d43aeeb027dff86b6feed24e0b69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Mon, 8 Mar 2021 20:19:46 +0100 Subject: [PATCH] Make FollowEntityAI configurable via constructor arguments --- .../base/api/game/ai/FollowEntityAI.java | 17 ++++++++--------- .../AstarPathFinder.java | 2 +- .../{pathfinding => pathfinder}/PathFinder.java | 2 +- 3 files changed, 10 insertions(+), 11 deletions(-) rename api/src/main/java/com/bartlomiejpluta/base/api/util/{pathfinding => pathfinder}/AstarPathFinder.java (99%) rename api/src/main/java/com/bartlomiejpluta/base/api/util/{pathfinding => pathfinder}/PathFinder.java (81%) diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/game/ai/FollowEntityAI.java b/api/src/main/java/com/bartlomiejpluta/base/api/game/ai/FollowEntityAI.java index dff764b6..da9fb34a 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/game/ai/FollowEntityAI.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/game/ai/FollowEntityAI.java @@ -3,21 +3,21 @@ package com.bartlomiejpluta.base.api.game.ai; import com.bartlomiejpluta.base.api.game.entity.Direction; import com.bartlomiejpluta.base.api.game.entity.Entity; import com.bartlomiejpluta.base.api.game.map.layer.object.ObjectLayer; -import com.bartlomiejpluta.base.api.util.pathfinding.AstarPathFinder; -import com.bartlomiejpluta.base.api.util.pathfinding.PathFinder; +import com.bartlomiejpluta.base.api.util.pathfinder.PathFinder; import org.joml.Vector2i; public class FollowEntityAI implements AI { - private static final float recalculateInterval = 0.5f; - private final NPC npc; private final Entity target; - private final PathFinder pathFinder = new AstarPathFinder(100); - + private final PathFinder pathFinder; private final int range; + + private final float recalculateInterval; private float accumulator = 0.0f; - public FollowEntityAI(NPC npc, Entity target, int range) { + public FollowEntityAI(PathFinder pathFinder, float recalculateInterval, NPC npc, Entity target, int range) { + this.pathFinder = pathFinder; + this.recalculateInterval = recalculateInterval; this.npc = npc; this.range = range; this.target = target; @@ -27,7 +27,7 @@ public class FollowEntityAI implements AI { public void nextActivity(ObjectLayer layer, float dt) { var distance = npc.manhattanDistance(target); - if (!npc.isMoving() && distance > 1 && distance < range && accumulator >= recalculateInterval) { + if (!npc.isMoving() && 1 < distance && distance < range && accumulator >= recalculateInterval) { var path = pathFinder.findPath(layer, npc.getCoordinates(), target.getCoordinates()); if (!path.isEmpty()) { @@ -46,4 +46,3 @@ public class FollowEntityAI implements AI { accumulator += dt; } } - diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinding/AstarPathFinder.java b/api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinder/AstarPathFinder.java similarity index 99% rename from api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinding/AstarPathFinder.java rename to api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinder/AstarPathFinder.java index e8f11dba..9360cbe4 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinding/AstarPathFinder.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinder/AstarPathFinder.java @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.api.util.pathfinding; +package com.bartlomiejpluta.base.api.util.pathfinder; import com.bartlomiejpluta.base.api.game.map.layer.object.ObjectLayer; import org.joml.Vector2i; diff --git a/api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinding/PathFinder.java b/api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinder/PathFinder.java similarity index 81% rename from api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinding/PathFinder.java rename to api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinder/PathFinder.java index 4568aedd..4b296b81 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinding/PathFinder.java +++ b/api/src/main/java/com/bartlomiejpluta/base/api/util/pathfinder/PathFinder.java @@ -1,4 +1,4 @@ -package com.bartlomiejpluta.base.api.util.pathfinding; +package com.bartlomiejpluta.base.api.util.pathfinder; import com.bartlomiejpluta.base.api.game.map.layer.object.ObjectLayer; import org.joml.Vector2i;