import { engineSettings, effectSettings, lfoSettings } from '../stores/settings' import type { TileState } from '../types/tiles' import type { LFOSettings, LFOConfig } from '../stores/settings' export class ParameterManager { loadTileParams(tile: TileState): void { Object.entries(tile.engineParams).forEach(([key, value]) => { engineSettings.setKey(key as any, value) }) Object.entries(tile.effectParams).forEach(([key, value]) => { effectSettings.setKey(key as any, value as any) }) if (tile.lfoConfigs) { Object.entries(tile.lfoConfigs).forEach(([key, value]) => { lfoSettings.setKey(key as keyof LFOSettings, value) }) } } saveTileParams(tile: TileState): TileState { return { ...tile, engineParams: { ...engineSettings.get() }, effectParams: { ...effectSettings.get() }, lfoConfigs: JSON.parse(JSON.stringify(lfoSettings.get())) } } getEngineParams(): Record { return engineSettings.get() as Record } getEffectParams(): Record { return effectSettings.get() } getLFOConfigs(): LFOSettings { return lfoSettings.get() } setEngineParam(key: string, value: number): void { engineSettings.setKey(key as any, value) } setEffectParam(key: string, value: number | boolean | string): void { effectSettings.setKey(key as any, value as any) } setLFOConfig(lfoKey: keyof LFOSettings, config: LFOConfig): void { lfoSettings.setKey(lfoKey, config) } } export const parameterManager = new ParameterManager()