From b2f9a0ad83a6fdf71f86fb1d79a7345abe8ee35c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Fri, 26 Aug 2022 11:25:31 +0200 Subject: [PATCH] Create Suspend move path segment --- .../base/util/path/BasePath.java | 6 ++++++ .../base/util/path/CharacterPath.java | 6 ++++++ .../base/util/path/SuspendSegment.java | 21 +++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 api/src/main/java/com/bartlomiejpluta/base/util/path/SuspendSegment.java diff --git a/api/src/main/java/com/bartlomiejpluta/base/util/path/BasePath.java b/api/src/main/java/com/bartlomiejpluta/base/util/path/BasePath.java index 7bc3c987..aef70e97 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/util/path/BasePath.java +++ b/api/src/main/java/com/bartlomiejpluta/base/util/path/BasePath.java @@ -6,6 +6,7 @@ import lombok.Getter; import java.util.ArrayList; import java.util.List; +import java.util.function.Predicate; public class BasePath implements Path { @@ -41,4 +42,9 @@ public class BasePath implements Path { path.add(new RunSegment<>(runnable)); return this; } + + public Path suspend(Predicate predicate) { + path.add(new SuspendSegment<>(predicate)); + return this; + } } diff --git a/api/src/main/java/com/bartlomiejpluta/base/util/path/CharacterPath.java b/api/src/main/java/com/bartlomiejpluta/base/util/path/CharacterPath.java index 7ad776ab..a6478fb5 100644 --- a/api/src/main/java/com/bartlomiejpluta/base/util/path/CharacterPath.java +++ b/api/src/main/java/com/bartlomiejpluta/base/util/path/CharacterPath.java @@ -6,6 +6,7 @@ import lombok.Getter; import java.util.ArrayList; import java.util.List; +import java.util.function.Predicate; public class CharacterPath implements Path { @@ -51,4 +52,9 @@ public class CharacterPath implements Path { path.add(new RunSegment<>(runnable)); return this; } + + public CharacterPath suspend(Predicate predicate) { + path.add(new SuspendSegment<>(predicate)); + return this; + } } diff --git a/api/src/main/java/com/bartlomiejpluta/base/util/path/SuspendSegment.java b/api/src/main/java/com/bartlomiejpluta/base/util/path/SuspendSegment.java new file mode 100644 index 00000000..3e9b6b8a --- /dev/null +++ b/api/src/main/java/com/bartlomiejpluta/base/util/path/SuspendSegment.java @@ -0,0 +1,21 @@ +package com.bartlomiejpluta.base.util.path; + +import com.bartlomiejpluta.base.api.map.layer.object.ObjectLayer; +import com.bartlomiejpluta.base.api.move.Movable; +import lombok.RequiredArgsConstructor; + +import java.util.function.Predicate; + +@RequiredArgsConstructor +public class SuspendSegment implements PathSegment { + private final Predicate predicate; + + @Override + public PathProgress perform(T movable, ObjectLayer layer, float dt) { + if (predicate.test(movable)) { + return PathProgress.SEGMENT_DONE; + } + + return PathProgress.ONGOING; + } +}