import { BlackTrack, ConcreteProducer, Producer } from "./producer"; import { AudioTractor, trackIndexGen, Tractor, VideoTractor } from "./tractor"; export class Project { producers: Producer[] = []; tractors: Tractor[] = []; constructor(public fps: number) { this.producers.push(new BlackTrack()); } addProducer(file: string): ConcreteProducer { const producer = new ConcreteProducer(file); this.producers.push(producer); return producer; } addAudioTractor(): AudioTractor { const tractor = new AudioTractor(); this.tractors.push(tractor); return tractor; } addVideoTractor(): AudioTractor { const tractor = new VideoTractor(); this.tractors.push(tractor); return tractor; } async toXML() { return ` ${( await Promise.all( this.producers.map((producer) => producer.toXML(this.fps)) ) ).join("\n")} 2 2 1 0 1633881496938 [ ] 21.08.1 1.02 1 ${this.producers .filter((e) => !(e instanceof BlackTrack)) .map((producer) => ``) .join("\n")} ${this.tractors.map((tractor) => tractor.toXML()).join("\n")} ${this.tractors .map((tractor) => ``) .join("\n")} `; } }