71 lines
2.0 KiB
JavaScript
71 lines
2.0 KiB
JavaScript
// js/state.js
|
||
import { initializePatternState } from './pattern/pattern_state.js';
|
||
import { audioState, initializeAudioState } from './audio/audio_state.js';
|
||
import { DEFAULT_VOLUME, DEFAULT_PAN } from "./config.js";
|
||
|
||
// Estado global da aplicação
|
||
const globalState = {
|
||
sliceToolActive: false,
|
||
isPlaying: false,
|
||
isAudioEditorPlaying: false,
|
||
playbackIntervalId: null,
|
||
currentStep: 0,
|
||
metronomeEnabled: false,
|
||
originalXmlDoc: null,
|
||
currentBeatBasslineName: 'Novo Projeto',
|
||
masterVolume: DEFAULT_VOLUME,
|
||
masterPan: DEFAULT_PAN,
|
||
zoomLevelIndex: 2,
|
||
isLoopActive: false,
|
||
loopStartTime: 0,
|
||
loopEndTime: 8,
|
||
resizeMode: 'trim',
|
||
selectedClipId: null,
|
||
isRecording: false,
|
||
clipboard: null,
|
||
lastRulerClickTime: 0,
|
||
};
|
||
|
||
// --- ADICIONE ESTE BLOCO ---
|
||
// Define o ESTADO INICIAL para o pattern module
|
||
const patternState = {
|
||
tracks: [],
|
||
activeTrackId: null,
|
||
activePatternIndex: 0,
|
||
};
|
||
// --- FIM DA ADIÇÃO ---
|
||
|
||
// Combina todos os estados em um único objeto namespaced
|
||
export let appState = {
|
||
global: globalState,
|
||
pattern: patternState, // <-- AGORA 'patternState' está definido
|
||
audio: audioState,
|
||
};
|
||
|
||
// Função para resetar o projeto para o estado inicial
|
||
export function resetProjectState() {
|
||
initializePatternState(); // Esta função vai MODIFICAR appState.pattern
|
||
initializeAudioState();
|
||
|
||
Object.assign(globalState, {
|
||
sliceToolActive: false,
|
||
isPlaying: false,
|
||
isAudioEditorPlaying: false,
|
||
playbackIntervalId: null,
|
||
currentStep: 0,
|
||
metronomeEnabled: false,
|
||
originalXmlDoc: null,
|
||
currentBeatBasslineName: 'Novo Projeto',
|
||
masterVolume: DEFAULT_VOLUME,
|
||
masterPan: DEFAULT_PAN,
|
||
zoomLevelIndex: 2,
|
||
isLoopActive: false,
|
||
loopStartTime: 0,
|
||
loopEndTime: 8,
|
||
resizeMode: 'trim',
|
||
selectedClipId: null,
|
||
isRecording: false,
|
||
clipboard: null,
|
||
lastRulerClickTime: 0,
|
||
});
|
||
} |