@geheimgang188/fmod-service-api
Version:
FMOD service API
81 lines • 6.17 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FmodEvent = void 0;
const fmod_event_type_1 = require("./interfaces/fmod-event-type");
class FmodEvent {
constructor(name, bankName, additionalBankRequirements, eventType, logger) {
// Add parameters which should be initialised here
this.params = [];
this.id = `${eventType}:/${name}`;
this._logger = logger;
this._eventType = eventType;
this.eventName = name;
this.bankName = bankName;
this.additionalBankRequirements = additionalBankRequirements;
}
init(api, bankLoader) {
var _a, _b;
(_a = this._logger) === null || _a === void 0 ? void 0 : _a.debug(`Initialising event ${this.id}`);
this._api = api;
this._bankLoader = bankLoader;
for (const param of this.params) {
(_b = this._logger) === null || _b === void 0 ? void 0 : _b.debug(`- Initialising parameter ${param.name}`);
param.init(this.id, api);
}
}
get api() {
if (this._api === undefined) {
throw new Error('API not initialised yet.');
}
return this._api;
}
get eventType() {
return this._eventType;
}
play() {
return __awaiter(this, void 0, void 0, function* () {
if (this._eventType === fmod_event_type_1.FmodEventType.snapshot) {
throw new Error(`${this.id} is a snapshot and should be start()ed/stop()ped.`);
}
yield this.ensureBankLoaded();
return this.api.play(this.id);
});
}
playVoice(voiceKey) {
return __awaiter(this, void 0, void 0, function* () {
yield this.ensureBankLoaded();
return this.api.playVoice(this.id, voiceKey);
});
}
start() {
return __awaiter(this, void 0, void 0, function* () {
// TODO Support restart from beginning
yield this.ensureBankLoaded();
return this.api.start(this.id);
});
}
stop() {
return this.api.stop(this.id);
}
ensureBankLoaded() {
return __awaiter(this, void 0, void 0, function* () {
if (this._bankLoader === undefined)
throw new Error(`Bank loader not initialised on event ${this.id}`);
yield this._bankLoader.ensureBankLoaded(this.bankName);
for (const additionalBank of this.additionalBankRequirements) {
yield this._bankLoader.ensureBankLoaded(additionalBank);
}
});
}
}
exports.FmodEvent = FmodEvent;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1vZC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGktZ2VuZXJhdG9yL2Ztb2QtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBSUEsa0VBQTZEO0FBRTdELE1BQWEsU0FBUztJQWVsQixZQUFhLElBQVksRUFBRSxRQUFnQixFQUFFLDBCQUFvQyxFQUFFLFNBQXdCLEVBQUUsTUFBZ0I7UUFIN0gsa0RBQWtEO1FBQ2xDLFdBQU0sR0FBb0IsRUFBRSxDQUFDO1FBR3pDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLDBCQUEwQixDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUFJLENBQUUsR0FBYSxFQUFFLFVBQXdCOztRQUN6QyxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLEtBQUssQ0FBRSxzQkFBc0IsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsS0FBTSxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFHLENBQUM7WUFDaEMsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxLQUFLLENBQUUsNEJBQTRCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBRSxDQUFDO1lBQ2hFLEtBQUssQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUUsQ0FBQztRQUMvQixDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksR0FBRztRQUNILElBQUssSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUcsQ0FBQztZQUM1QixNQUFNLElBQUksS0FBSyxDQUFFLDBCQUEwQixDQUFFLENBQUM7UUFDbEQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFSyxJQUFJOztZQUNOLElBQUssSUFBSSxDQUFDLFVBQVUsS0FBSywrQkFBYSxDQUFDLFFBQVEsRUFBRyxDQUFDO2dCQUMvQyxNQUFNLElBQUksS0FBSyxDQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsbURBQW1ELENBQUUsQ0FBQztZQUNyRixDQUFDO1lBQ0QsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLElBQUksQ0FBQyxFQUFFLENBQUUsQ0FBQztRQUNwQyxDQUFDO0tBQUE7SUFFSyxTQUFTLENBQUUsUUFBZ0I7O1lBQzdCLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBRSxDQUFDO1FBQ25ELENBQUM7S0FBQTtJQUVLLEtBQUs7O1lBQ1Asc0NBQXNDO1lBQ3RDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxJQUFJLENBQUMsRUFBRSxDQUFFLENBQUM7UUFDckMsQ0FBQztLQUFBO0lBRUQsSUFBSTtRQUNBLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBRSxDQUFDO0lBQ3BDLENBQUM7SUFFYSxnQkFBZ0I7O1lBQzFCLElBQUssSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTO2dCQUFHLE1BQU0sSUFBSSxLQUFLLENBQUUsd0NBQXdDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUFDO1lBRTNHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBRSxJQUFJLENBQUMsUUFBUSxDQUFFLENBQUM7WUFDekQsS0FBTSxNQUFNLGNBQWMsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUcsQ0FBQztnQkFDN0QsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFFLGNBQWMsQ0FBRSxDQUFDO1lBQzlELENBQUM7UUFDTCxDQUFDO0tBQUE7Q0FDSjtBQTVFRCw4QkE0RUMifQ==