ldtk-entity.js

/**
 * Creates LDTK entities.
 *
 * @example
 *
 * const entity = new LdtkEntity({$data, $identifier, $label});
 */
class LdtkEntity {

    /**
     * @typedef {Object} TypeLdtkEntityField A LDTK JSON data custom field.
     * @property {string} TypeLdtkEntityField.__identifier The identifier.
     * @property {string} TypeLdtkEntityField.__type The type.
     * @property {any} TypeLdtkEntityField.__value The value.
     * @protected
     *
     * @memberof LdtkEntity
     */

    /**
     * Stores the LDTK JSON data custom fields.
     * @type {Array<TypeLdtkEntityField>}
     * @private
     */
    $data;

    /**
     * Stores the identifier.
     * @type {string}
     * @private
     */
    $identifier;

    /**
     * Stores the label.
     * @type {string}
     * @private
     */
    $label;

    /**
     * Gets the LDTK JSON data custom fields.
     * @type {Array<TypeLdtkEntityField>}
     * @public
     */
    get data() {

        return this.$data;
    }

    /**
     * Gets the identifier.
     * @type {string}
     * @public
     */
    get identifier() {

        return this.$identifier;
    }

    /**
     * Gets the label.
     * @type {string}
     * @public
     */
    get label() {

        return this.$label;
    }

    /**
     * Creates a new LDTK entity.
     * @param {Object} $parameters The given parameters.
     * @param {Array<TypeLdtkEntityField>} $parameters.$data The LDTK JSON data custom fields.
     * @param {string} $parameters.$identifier The identifier of the entity to get.
     * @param {string} $parameters.$label The label of the entity to get.
     */
    constructor({$data, $identifier, $label}) {

        this.$data = $data;
        this.$identifier = $identifier;
        this.$label = $label;
    }
}

export {

    LdtkEntity
};

export default LdtkEntity;