@mann-conomy/tf-particle-effects
Version:
A Node.js wrapper for Team Fortress 2's in-game particle effects.
61 lines • 2.77 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAllAttributesOrThrow = getAllAttributesOrThrow;
exports.evaluate = evaluate;
exports.find = find;
exports.translate = translate;
const not_found_1 = __importDefault(require("../classes/errors/not-found"));
const translation_1 = __importDefault(require("../classes/errors/translation"));
const enums_1 = require("../resources/enums");
const utils_1 = require("./utils");
function createParticleWithDefaults(particle) {
return {
id: particle.id || enums_1.InvalidParticle.Id,
name: particle.name || enums_1.InvalidParticle.Name,
language: particle.language || enums_1.LanguageTranslation.English
};
}
function getAllAttributesOrThrow(particles, language) {
const attributes = particles[language];
if (!Array.isArray(attributes)) {
throw new not_found_1.default("No particle effects were found matching the provided language code.");
}
return attributes;
}
function evaluate(particles, particle, strict) {
const effect = createParticleWithDefaults(particle);
const attributes = getAllAttributesOrThrow(particles, effect.language);
if (strict) {
return attributes.some(attribute => (0, utils_1.compareByIdAndName)(attribute, effect));
}
return attributes.some(attribute => (0, utils_1.compareByIdOrName)(attribute, effect));
}
function find(particles, particle, strict) {
const effect = createParticleWithDefaults(particle);
const attributes = getAllAttributesOrThrow(particles, effect.language);
if (strict) {
const attribute = attributes.find(attribute => (0, utils_1.compareByIdAndName)(attribute, effect));
if (attribute !== undefined) {
return attribute;
}
throw new not_found_1.default("No particle effect was found with the specified id and name.");
}
const attribute = attributes.find(attribute => (0, utils_1.compareByIdOrName)(attribute, effect));
if (attribute !== undefined) {
return attribute;
}
throw new not_found_1.default("No particle effect was found with the specified id or name.");
}
function translate(particles, particle, language, strict) {
const effect = find(particles, particle, strict);
const attributes = getAllAttributesOrThrow(particles, language);
const attribute = attributes.find(attribute => (0, utils_1.compareById)(attribute, effect.id));
if (attribute !== undefined) {
return attribute;
}
throw new translation_1.default("No translation exists for this particle effect.");
}
//# sourceMappingURL=shared.js.map