diff --git a/PlayWall/src/main/resources/lang/_de.properties b/PlayWall/src/main/resources/lang/_de.properties index 33029a528b99644493e53bcd9b83e304ae7fd03d..9a34ee6fd50a2f8b0744d85818267e6cd852b17b 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 94459f05e67e68795cc885c73be904a798fced97..5f28296ac7c24a72a9ae24fc40c1305b6eb4e3df 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 ba284a16cccbe20166ac9c86c41fbb9a822dc5e5..f0516d5a7963b65c5b6f4009e81cba641f7e9dcd 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 4f1390d9e6ebda63f92fe7647d00ae0fe759df2c..ce08ec84067ac2b3cb2a89b44f7c17335558eba2 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.