Skip to content
Snippets Groups Projects
Commit ed71bd21 authored by Tobias Ullerich's avatar Tobias Ullerich
Browse files

Merge branch 'feature/166_trigger' into 'develop'

Feature/166 trigger

See merge request PlayWall/PlayWallDesktop!10
parents 6925fdd1 51954726
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
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)) {
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
......
......@@ -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);
}
}
......
......@@ -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);
......
......@@ -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
......
......@@ -3,6 +3,7 @@ package de.tobias.playpad.tigger;
public enum TriggerPoint {
START,
EOF_STOP
STOP,
EOF
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment