"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.initModFeatures = void 0;
/**
 * Helper function to instantiate an array of mod features all at once. Use this function if your
 * mod uses the pattern of expressing mod features as `ModFeature` classes.
 *
 * If your feature classes have `v` variables, then this function will successfully register them
 * with the save data manager.
 *
 * For example:
 *
 * ```ts
 * const MOD_FEATURES = [
 *   MyFeature1,
 *   MyFeature2,
 *   MyFeature3,
 * ] as const;
 * initModFeatures(mod, MOD_FEATURES);
 * ```
 *
 * @param mod The upgraded mod to use.
 * @param modFeatures An array of the feature classes that you have in your mod.
 * @param init Optional. Whether to automatically add the callbacks on the feature. Defaults to
 *             true.
 * @returns An array of the instantiated features in the same order that the constructors were
 *          passed in. (In most cases, you probably won't need the returned array.)
 */
function initModFeatures(mod, modFeatures, init = true) {
    const instantiatedModFeatures = [];
    for (const modFeature of modFeatures) {
        // eslint-disable-next-line new-cap
        const instantiatedModFeature = new modFeature(mod, false);
        instantiatedModFeature.init(init);
        instantiatedModFeatures.push(instantiatedModFeature);
    }
    return instantiatedModFeatures;
}
exports.initModFeatures = initModFeatures;
