arx-level-generator
Version:
A tool for creating Arx Fatalis maps
188 lines • 5.71 kB
JavaScript
import path from 'node:path';
import { AmbienceTrack } from './AmbienceTrack.js';
export class Ambience {
static targetPath = 'sfx/ambiance';
name;
volume;
isNative;
tracks;
constructor(props) {
this.name = props.name;
this.volume = props.volume ?? 100;
this.isNative = props.isNative ?? true;
this.tracks = props.tracks ?? [];
}
clone() {
return new Ambience({
name: this.name,
volume: this.volume,
isNative: this.isNative,
tracks: this.tracks,
});
}
static fromAudio(ambienceName, audio) {
return new Ambience({
name: ambienceName,
isNative: false,
tracks: [AmbienceTrack.fromAudio(audio)],
});
}
exportSourcesAndTargets(settings) {
if (this.isNative) {
throw new Error('trying to export a native Ambience');
}
const results = [];
for (const track of this.tracks) {
results.push(track.exportSourceAndTarget(settings));
}
return results;
}
toArxData(settings) {
const target = path.resolve(settings.outputDir, Ambience.targetPath, `${this.name}.amb.json`);
return {
[target]: {
tracks: this.tracks.map((track) => track.toArxTrack()),
},
};
}
// ----------------
static get none() {
return new Ambience({ name: 'none' });
}
static get blackThing() {
return new Ambience({ name: 'ambient_blackthing' });
}
static get bunkerAkbaa() {
return new Ambience({ name: 'ambient_bunker_akbaa' });
}
static get bunker() {
return new Ambience({ name: 'ambient_bunker' });
}
static get castle() {
return new Ambience({ name: 'ambient_castle' });
}
static get caveA() {
return new Ambience({ name: 'ambient_cave_a' });
}
static get caveB() {
return new Ambience({ name: 'ambient_cave_b' });
}
static get caveFrozen() {
return new Ambience({ name: 'ambient_cave_frozen' });
}
static get caveGreu() {
return new Ambience({ name: 'ambient_cave_greu' });
}
static get caveLava() {
return new Ambience({ name: 'ambient_cave_lava' });
}
static get caveWorm() {
return new Ambience({ name: 'ambient_cave_worm' });
}
static get credits() {
return new Ambience({ name: 'ambient_credits' });
}
static get cryptA() {
return new Ambience({ name: 'ambient_crypt_a' });
}
static get cryptB() {
return new Ambience({ name: 'ambient_crypt_b' });
}
static get cryptC() {
return new Ambience({ name: 'ambient_crypt_c' });
}
static get cryptD() {
return new Ambience({ name: 'ambient_crypt_d' });
}
static get cryptE() {
return new Ambience({ name: 'ambient_crypt_e' });
}
static get cryptF() {
return new Ambience({ name: 'ambient_crypt_f' });
}
static get cryptLich() {
return new Ambience({ name: 'ambient_crypt_lich' });
}
static get dramatic() {
return new Ambience({ name: 'ambient_dramatic' });
}
static get dwarf() {
return new Ambience({ name: 'ambient_dwarf' });
}
static get fight() {
return new Ambience({ name: 'ambient_fight' });
}
static get fightMusic() {
return new Ambience({ name: 'ambient_fight_music' });
}
static get gobCastle() {
return new Ambience({ name: 'ambient_gob_castle' });
}
static get gobIntro() {
return new Ambience({ name: 'ambient_gob_intro' });
}
static get jailMain() {
return new Ambience({ name: 'ambient_gob_jail_main' });
}
static get jailStress() {
return new Ambience({ name: 'ambient_gob_jail_stress' });
}
static get gobRuin() {
return new Ambience({ name: 'ambient_gob_ruin' });
}
static get importantPlace() {
return new Ambience({ name: 'Ambient_important_place' });
}
static get introA() {
return new Ambience({ name: 'ambient_intro_a' });
}
static get intro() {
return new Ambience({ name: 'ambient_intro' });
}
static get introB() {
return new Ambience({ name: 'ambient_intro_b' });
}
static get menu() {
return new Ambience({ name: 'ambient_menu' });
}
static get noden() {
return new Ambience({ name: 'ambient_noden' });
}
static get outpost() {
return new Ambience({ name: 'ambient_outpost' });
}
static get rebelsCool() {
return new Ambience({ name: 'ambient_rebels_cool' });
}
static get rebelsIntense() {
return new Ambience({ name: 'ambient_rebels_intense' });
}
static get snakeCastle() {
return new Ambience({ name: 'ambient_snake_castle' });
}
static get snakeIllusion() {
return new Ambience({ name: 'ambient_snake_illusion' });
}
static get tavern() {
return new Ambience({ name: 'ambient_tavern' });
}
static get templeAkbaa() {
return new Ambience({ name: 'ambient_temple_akbaa' });
}
static get templeAkbaaUp() {
return new Ambience({ name: 'ambient_temple_akbaa_up' });
}
static get town() {
return new Ambience({ name: 'ambient_town' });
}
static get troll() {
return new Ambience({ name: 'ambient_troll' });
}
static get reverbTest() {
return new Ambience({ name: 'reverb_test' });
}
static get stress() {
return new Ambience({ name: 'stress' });
}
}
//# sourceMappingURL=Ambience.js.map