From 51954726dbfbb3735debbbd96cf691cb10d751cd Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Sun, 15 Nov 2020 11:57:49 +0100 Subject: [PATCH] #166 - split trigger points into stop and eof --- PlayWall/src/main/resources/lang/_de.properties | 3 ++- .../de/tobias/playpad/pad/PadSettingsSerializer.java | 11 ++++++++--- .../listener/trigger/PadTriggerDurationListener.java | 4 ++-- .../listener/trigger/PadTriggerStatusListener.java | 8 ++++---- .../main/java/de/tobias/playpad/tigger/Trigger.java | 8 +++++--- .../java/de/tobias/playpad/tigger/TriggerPoint.java | 3 ++- 6 files changed, 23 insertions(+), 14 deletions(-) diff --git a/PlayWall/src/main/resources/lang/_de.properties b/PlayWall/src/main/resources/lang/_de.properties index cfbdf22e..9e927c66 100755 --- a/PlayWall/src/main/resources/lang/_de.properties +++ b/PlayWall/src/main/resources/lang/_de.properties @@ -210,7 +210,8 @@ Trigger.Cart.Name=Kacheln Trigger.Volume.Name=Lautst\u00E4rke # TriggerPoint - Enum TriggerPoint.START=Start -TriggerPoint.EOF_STOP=Ende/Stop +TriggerPoint.STOP=Stop +TriggerPoint.EOF=Ende (EoF) # Drag and Drop Mode DnDMode.Replace=Ersetzen DnDMode.Duplicate=Duplizieren diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java index c4a44e1d..f3fc932c 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/PadSettingsSerializer.java @@ -1,5 +1,6 @@ package de.tobias.playpad.pad; +import de.thecodelabs.logger.Logger; import de.thecodelabs.storage.settings.UserDefaults; import de.tobias.playpad.design.modern.model.ModernCartDesign; import de.tobias.playpad.design.modern.serializer.ModernCartDesignSerializer; @@ -92,9 +93,13 @@ public class PadSettingsSerializer { Element triggersElement = settingsElement.element(TRIGGERS_ELEMENT); if (triggersElement != null) { for (Element triggerElement : triggersElement.elements(TRIGGER_ELEMENT)) { - Trigger trigger = new Trigger(); - trigger.load(triggerElement); - padSettings.getTriggers().put(trigger.getTriggerPoint(), trigger); + try { + Trigger trigger = new Trigger(); + trigger.load(triggerElement); + padSettings.getTriggers().put(trigger.getTriggerPoint(), trigger); + } catch (IllegalArgumentException e) { + Logger.error(e); + } } } padSettings.updateTrigger(); // Add missing trigger points diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerDurationListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerDurationListener.java index 56eb71c9..5ed71ddb 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerDurationListener.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/listener/trigger/PadTriggerDurationListener.java @@ -15,7 +15,7 @@ import javafx.util.Duration; public class PadTriggerDurationListener implements ChangeListener<Duration> { - private Pad pad; + private final Pad pad; public PadTriggerDurationListener(Pad pad) { this.pad = pad; @@ -37,7 +37,7 @@ public class PadTriggerDurationListener implements ChangeListener<Duration> { Trigger startTrigger = padSettings.getTrigger(TriggerPoint.START); startTrigger.handle(pad, newValue, pad.getProject(), mainViewController, currentProfile); - Trigger endTrigger = padSettings.getTrigger(TriggerPoint.EOF_STOP); + Trigger endTrigger = padSettings.getTrigger(TriggerPoint.EOF); endTrigger.handle(pad, leftTime, pad.getProject(), mainViewController, currentProfile); } } 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 45174361..f7edfbdf 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 @@ -14,7 +14,7 @@ import javafx.util.Duration; public class PadTriggerStatusListener implements ChangeListener<PadStatus> { - private Pad pad; + private final Pad pad; public PadTriggerStatusListener(Pad pad) { this.pad = pad; @@ -28,10 +28,10 @@ public class PadTriggerStatusListener implements ChangeListener<PadStatus> { // Execute Trigger if (newValue == PadStatus.PLAY) { // TRIGGER FÜR START executeTrigger(padSettings.getTriggers().get(TriggerPoint.START)); - } else if (newValue == PadStatus.STOP || (oldValue == PadStatus.PLAY && newValue == PadStatus.READY)) { // TRIGGER FÜR STOP - executeTrigger(padSettings.getTriggers().get(TriggerPoint.EOF_STOP)); + } else if (newValue == PadStatus.STOP) { // TRIGGER FÜR STOP + executeTrigger(padSettings.getTriggers().get(TriggerPoint.STOP)); } else if (oldValue == PadStatus.PLAY && newValue == PadStatus.READY && pad.isEof()) { // TRIGGER FÜR EOF - executeTrigger(padSettings.getTriggers().get(TriggerPoint.EOF_STOP)); + 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 2f65d793..fcfb8301 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/Trigger.java @@ -71,7 +71,7 @@ public class Trigger { try { triggerPoint = TriggerPoint.valueOf(element.attributeValue(POINT_ATTR)); } catch (Exception e) { - Logger.error(e); + throw new IllegalArgumentException("Trigger Point " + element.attributeValue(POINT_ATTR) + " not exists"); } for (Element itemElement : element.elements(ITEM_ELEMENT)) { @@ -108,7 +108,9 @@ public class Trigger { for (TriggerItem item : items) { if (triggerPoint == TriggerPoint.START) { handleStartPoint(pad, duration, project, mainViewController, currentProfile, item); - } else if ((triggerPoint == TriggerPoint.EOF_STOP)) { + } else if (triggerPoint == TriggerPoint.STOP) { + handleEndPoint(pad, duration, project, mainViewController, currentProfile, item); + } else if (triggerPoint == TriggerPoint.EOF) { handleEndPoint(pad, duration, project, mainViewController, currentProfile, item); } } @@ -126,7 +128,7 @@ public class Trigger { 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 gepsiel wurde größer ist als die gesetzte und noch der Trigger noch nicht ausgeführt + // Mitten drin, wenn die Zeit die gespiel wurde größer ist als die gesetzte und noch der Trigger noch nicht ausgeführt // wurde (null) if ((item.getPerformedAt() == null && item.getDurationFromPoint().lessThan(duration)) // Wenn der Trigger am Anfang ist 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 30730e5b..c25fb939 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java @@ -3,6 +3,7 @@ package de.tobias.playpad.tigger; public enum TriggerPoint { START, - EOF_STOP + STOP, + EOF } -- GitLab