listeners.add(listener);
}
- public void select(int index) {
- presets[index].select();
+ public void dirty(LXPattern pattern) {
+ if (loadedPattern == pattern) {
+ onPresetDirty();
+ }
+ }
+
+ public void select(Engine.Deck deck, int index) {
+ presets[index].select(deck);
}
- public void store(int index) {
+ public void store(Engine.Deck deck, int index) {
presets[index].store(midiEngine.getFocusedPattern());
for (PresetListener listener : listeners) {
listener.onPresetStored(presets[index]);
}
- select(index);
+ select(deck, index);
}
public void onPresetLoaded(Preset preset, LXPattern pattern) {
}
private void onPresetDirty() {
- for (PresetListener listener : listeners) {
- listener.onPresetDirty(loadedPreset);
+ if (loadedPreset != null) {
+ for (PresetListener listener : listeners) {
+ listener.onPresetDirty(loadedPreset);
+ }
}
}
for (LXParameter p : pattern.getParameters()) {
parameters.put(p.getLabel(), p.getValuef());
}
+ if (pattern instanceof DPat) {
+ DPat dpattern = (DPat) pattern;
+ for (DBool bool : dpattern.bools) {
+ parameters.put(bool.tag, bool.b ? 1.f : 0.f);
+ }
+ for (Pick pick : dpattern.picks) {
+ parameters.put(pick.tag, pick.CurRow + pick.CurCol/100.f);
+ }
+ }
manager.write();
}
- public void select() {
- Engine.Deck deck = midiEngine.getFocusedDeck();
+ public void select(Engine.Deck deck) {
for (LXPattern pattern : deck.getPatterns()) {
if (pattern.getClass().getName().equals(className)) {
for (String pLabel : parameters.keySet()) {
p.setValue(parameters.get(pLabel));
}
}
+ if (pattern instanceof DPat) {
+ DPat dpattern = (DPat) pattern;
+ for (DBool bool : dpattern.bools) {
+ if (bool.tag.equals(pLabel)) {
+ bool.set(bool.row, bool.col, parameters.get(pLabel) > 0);
+ }
+ }
+ for (Pick pick : dpattern.picks) {
+ if (pick.tag.equals(pLabel)) {
+ float f = parameters.get(pLabel);
+ pick.set((int) floor(f), (int) round((f%1)*100.));
+ }
+ }
+ }
}
deck.goPattern(pattern);
+ if (pattern instanceof DPat) {
+ ((DPat)pattern).updateLights();
+ }
manager.onPresetLoaded(this, pattern);
break;
}