forked from nikita/muzika-gromche
Config: reduce repetition
It may look complicated, but it reduced references to each individual entry from almost ten to just 4.
This commit is contained in:
parent
601ecf8887
commit
3e751c0d8d
|
@ -1334,6 +1334,7 @@ namespace MuzikaGromche
|
||||||
const string section = "Timings";
|
const string section = "Timings";
|
||||||
var colorTransitionRange = new AcceptableValueRange<float>(0f, 1f);
|
var colorTransitionRange = new AcceptableValueRange<float>(0f, 1f);
|
||||||
// Declare and initialize early to avoid "Use of unassigned local variable"
|
// Declare and initialize early to avoid "Use of unassigned local variable"
|
||||||
|
List<(Action<Track> Load, Action Apply)> entries = [];
|
||||||
SyncedEntry<bool> overrideTimingsSyncedEntry = null;
|
SyncedEntry<bool> overrideTimingsSyncedEntry = null;
|
||||||
SyncedEntry<float> beatsOffsetSyncedEntry = null;
|
SyncedEntry<float> beatsOffsetSyncedEntry = null;
|
||||||
SyncedEntry<float> colorTransitionInSyncedEntry = null;
|
SyncedEntry<float> colorTransitionInSyncedEntry = null;
|
||||||
|
@ -1379,56 +1380,43 @@ namespace MuzikaGromche
|
||||||
CanModifyCallback = CanModifyIfHost,
|
CanModifyCallback = CanModifyIfHost,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
CSyncHackAddSyncedEntry(beatsOffsetSyncedEntry);
|
registerStruct(beatsOffsetSyncedEntry, t => t._BeatsOffset, x => BeatsOffsetOverride = x);
|
||||||
CSyncHackAddSyncedEntry(colorTransitionInSyncedEntry);
|
registerStruct(colorTransitionInSyncedEntry, t => t._ColorTransitionIn, x => ColorTransitionInOverride = x);
|
||||||
CSyncHackAddSyncedEntry(colorTransitionOutSyncedEntry);
|
registerStruct(colorTransitionOutSyncedEntry, t => t._ColorTransitionOut, x => ColorTransitionOutOverride = x);
|
||||||
CSyncHackAddSyncedEntry(colorTransitionEasingSyncedEntry);
|
registerClass(colorTransitionEasingSyncedEntry, t => t._ColorTransitionEasing.Name, x => ColorTransitionEasingOverride = x);
|
||||||
|
|
||||||
beatsOffsetSyncedEntry.SyncHostToLocal();
|
void register<T>(SyncedEntry<T> syncedEntry, Func<Track, T> getter, Action applier)
|
||||||
colorTransitionInSyncedEntry.SyncHostToLocal();
|
{
|
||||||
colorTransitionOutSyncedEntry.SyncHostToLocal();
|
CSyncHackAddSyncedEntry(syncedEntry);
|
||||||
colorTransitionEasingSyncedEntry.SyncHostToLocal();
|
syncedEntry.SyncHostToLocal();
|
||||||
|
syncedEntry.Changed += (sender, args) => applier();
|
||||||
|
void loader(Track track)
|
||||||
|
{
|
||||||
|
// if track is null, set everything to defaults
|
||||||
|
syncedEntry.LocalValue = track == null ? (T)syncedEntry.Entry.DefaultValue : getter(track);
|
||||||
|
}
|
||||||
|
entries.Add((loader, applier));
|
||||||
|
}
|
||||||
|
|
||||||
beatsOffsetSyncedEntry.Changed += (sender, args) => apply();
|
void registerStruct<T>(SyncedEntry<T> syncedEntry, Func<Track, T> getter, Action<T?> setter) where T: struct =>
|
||||||
colorTransitionInSyncedEntry.Changed += (sender, args) => apply();
|
register(syncedEntry, getter, () => setter.Invoke(overrideTimingsSyncedEntry.Value ? syncedEntry.Value : null));
|
||||||
colorTransitionOutSyncedEntry.Changed += (sender, args) => apply();
|
void registerClass<T>(SyncedEntry<T> syncedEntry, Func<Track, T> getter, Action<T> setter) where T: class =>
|
||||||
colorTransitionEasingSyncedEntry.Changed += (sender, args) => apply();
|
register(syncedEntry, getter, () => setter.Invoke(overrideTimingsSyncedEntry.Value ? syncedEntry.Value : null));
|
||||||
|
|
||||||
void load()
|
void load()
|
||||||
{
|
{
|
||||||
// if track is null, set everything to defaults
|
|
||||||
var track = Plugin.CurrentTrack;
|
var track = Plugin.CurrentTrack;
|
||||||
if (track == null)
|
foreach (var entry in entries)
|
||||||
{
|
{
|
||||||
beatsOffsetSyncedEntry.LocalValue = 0f;
|
entry.Load(track);
|
||||||
colorTransitionInSyncedEntry.LocalValue = 0f;
|
|
||||||
colorTransitionOutSyncedEntry.LocalValue = 0f;
|
|
||||||
colorTransitionEasingSyncedEntry.LocalValue = Easing.Linear.Name;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
beatsOffsetSyncedEntry.LocalValue = track._BeatsOffset;
|
|
||||||
colorTransitionInSyncedEntry.LocalValue = track._ColorTransitionIn;
|
|
||||||
colorTransitionOutSyncedEntry.LocalValue = track._ColorTransitionOut;
|
|
||||||
colorTransitionEasingSyncedEntry.LocalValue = track._ColorTransitionEasing.Name;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void apply()
|
void apply()
|
||||||
{
|
{
|
||||||
if (!overrideTimingsSyncedEntry.Value)
|
foreach (var entry in entries)
|
||||||
{
|
{
|
||||||
BeatsOffsetOverride = null;
|
entry.Apply();
|
||||||
ColorTransitionInOverride = null;
|
|
||||||
ColorTransitionOutOverride = null;
|
|
||||||
ColorTransitionEasingOverride = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
BeatsOffsetOverride = beatsOffsetSyncedEntry.Value;
|
|
||||||
ColorTransitionInOverride = colorTransitionInSyncedEntry.Value;
|
|
||||||
ColorTransitionOutOverride = colorTransitionOutSyncedEntry.Value;
|
|
||||||
ColorTransitionEasingOverride = colorTransitionEasingSyncedEntry.Value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue