arx-level-generator
Version:
A tool for creating Arx Fatalis maps
52 lines • 1.97 kB
JavaScript
import path from 'node:path';
import { ArxSettingFlag, ArxTrackFlags } from 'arx-convert/types';
export class AmbienceTrack {
static targetPath = 'sfx/ambiance';
filename;
sourcePath;
flags;
keys;
constructor(props) {
this.filename = props.filename;
this.sourcePath = props.sourcePath;
this.flags = props.flags ?? ArxTrackFlags.None;
// TODO: turn this into a class maybe?
this.keys = [
{
start: 0,
loop: 1,
delayMin: 0,
delayMax: 0,
volume: { min: 1, max: 1, interval: 0, flags: ArxSettingFlag.None },
pitch: { min: 1, max: 1, interval: 0, flags: ArxSettingFlag.None },
pan: { min: 0, max: 0, interval: 0, flags: ArxSettingFlag.None },
x: { min: 0, max: 0, interval: 0, flags: ArxSettingFlag.None },
y: { min: 0, max: 0, interval: 0, flags: ArxSettingFlag.None },
z: { min: 0, max: 0, interval: 0, flags: ArxSettingFlag.None },
},
];
}
static fromAudio(audio) {
if (audio.isNative) {
throw new Error(`AmbienceTrack: using a native Audio "${audio.filename}" is not supported (yet?)`);
}
return new AmbienceTrack({
filename: audio.filename,
sourcePath: audio.sourcePath,
flags: ArxTrackFlags.Master,
});
}
exportSourceAndTarget(settings) {
const source = path.resolve(settings.assetsDir, this.sourcePath ?? AmbienceTrack.targetPath, this.filename);
const target = path.resolve(settings.outputDir, AmbienceTrack.targetPath, this.filename);
return [source, target];
}
toArxTrack() {
return {
filename: AmbienceTrack.targetPath + '/' + this.filename,
flags: this.flags,
keys: this.keys,
};
}
}
//# sourceMappingURL=AmbienceTrack.js.map