From f2dbba1ef34a65bf0e485e007a4c339bfcaa7252 Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Sun, 21 Nov 2021 20:59:07 +0100 Subject: [PATCH] #178 - Merge trigger point "end" with "end of file", fix trigger firing --- .../src/main/resources/lang/_de.properties | 1 - .../trigger/PadTriggerStatusListener.java | 8 ++--- .../de/tobias/playpad/tigger/Trigger.java | 30 ++++++++++--------- .../tobias/playpad/tigger/TriggerPoint.java | 3 +- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/PlayWall/src/main/resources/lang/_de.properties b/PlayWall/src/main/resources/lang/_de.properties index 33029a52..9a34ee6f 100755 --- a/PlayWall/src/main/resources/lang/_de.properties +++ b/PlayWall/src/main/resources/lang/_de.properties @@ -214,7 +214,6 @@ Trigger.Volume.Name=Lautst\u00E4rke TriggerPoint.START=Start TriggerPoint.STOP=Stop TriggerPoint.EOF=Ende -TriggerPoint.EOF_STATE=Ende (EoF) # Drag and Drop Mode DnDMode.Replace=Ersetzen diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java index 94459f05..5f28296a 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerStatusListener.java @@ -21,17 +21,17 @@ public class PadTriggerStatusListener implements ChangeListener<PadStatus> { } @Override - public void changed(ObservableValue<? extends PadStatus> observable, PadStatus oldValue, PadStatus newValue) { + public void changed(ObservableValue<? extends PadStatus> observable, PadStatus oldState, PadStatus newValue) { if (!pad.isIgnoreTrigger()) { PadSettings padSettings = pad.getPadSettings(); // Execute Trigger if (newValue == PadStatus.PLAY) { executeTrigger(padSettings.getTriggers().get(TriggerPoint.START)); - } else if (newValue == PadStatus.STOP) { + } else if (newValue == PadStatus.STOP && !pad.isEof()) { executeTrigger(padSettings.getTriggers().get(TriggerPoint.STOP)); - } else if (oldValue == PadStatus.PLAY && newValue == PadStatus.READY && pad.isEof()) { - executeTrigger(padSettings.getTriggers().get(TriggerPoint.EOF_STATE)); + } else if (oldState == PadStatus.STOP && newValue == PadStatus.READY && pad.isEof()){ + executeTrigger(padSettings.getTriggers().get(TriggerPoint.EOF)); } } else { pad.setIgnoreTrigger(false); diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java index ba284a16..f0516d5a 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java @@ -109,25 +109,17 @@ public class Trigger { if (triggerPoint == TriggerPoint.START) { handleStartPoint(pad, currentDuration, project, mainViewController, currentProfile, item); } else if (triggerPoint == TriggerPoint.STOP) { - handleEndPoint(pad, currentDuration, project, mainViewController, currentProfile, item); - } else if (triggerPoint == TriggerPoint.EOF) { - handleEndPoint(pad, currentDuration, project, mainViewController, currentProfile, item); - } else if (triggerPoint == TriggerPoint.EOF_STATE) { item.performAction(pad, project, mainViewController, currentProfile); + } else if (triggerPoint == TriggerPoint.EOF) { + if (item.getDurationFromPoint() == Duration.ZERO && pad.isEof()) { + item.performAction(pad, project, mainViewController, currentProfile); + } else { + handleEndPoint(pad, currentDuration, project, mainViewController, currentProfile, item); + } } } } - private void handleEndPoint(Pad pad, Duration duration, Project project, IMainViewController mainViewController, Profile currentProfile, TriggerItem item) { - // Wenn Trigger noch nicht gespielt wurde (null) und Zeit größer ist als gesetzte Zeit (oder 0) - if (item.getPerformedAt() == null && (item.getDurationFromPoint().greaterThan(duration) || duration.equals(Duration.ZERO))) { - item.performAction(pad, project, mainViewController, currentProfile); - item.setPerformedAt(duration); - } else if (item.getDurationFromPoint().lessThan(duration)) { - item.setPerformedAt(null); - } - } - private void handleStartPoint(Pad pad, Duration duration, Project project, IMainViewController mainViewController, Profile currentProfile, TriggerItem item) { if (pad.getStatus() == PadStatus.PLAY) { // Mitten drin, wenn die Zeit die gespielt wurde größer ist als die gesetzte und noch der Trigger noch nicht ausgeführt @@ -142,4 +134,14 @@ public class Trigger { } } } + + private void handleEndPoint(Pad pad, Duration duration, Project project, IMainViewController mainViewController, Profile currentProfile, TriggerItem item) { + // Wenn Trigger noch nicht gespielt wurde (null) und Zeit größer ist als gesetzte Zeit (oder 0) + if (item.getPerformedAt() == null && (item.getDurationFromPoint().greaterThan(duration) || duration.equals(Duration.ZERO))) { + item.performAction(pad, project, mainViewController, currentProfile); + item.setPerformedAt(duration); + } else if (item.getDurationFromPoint().lessThan(duration)) { + item.setPerformedAt(null); + } + } } diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java index 4f1390d9..ce08ec84 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java @@ -4,8 +4,7 @@ public enum TriggerPoint { START(true), STOP(false), - EOF(true), - EOF_STATE(false); + EOF(true); /** * Defines if a trigger can be run after, before a certain event. -- GitLab