Source: elements/Scenes.js

elements/Scenes.js

import Element from '../mixins/Element';

/**
 * Scenes Manager for MarkusJS. Children of this element are separate scenes that can be switched.
 * @example
 * scenes(scene = A)
 *   block(id=A)
 *     text | SCENE A
 *   block(id=B)
 *     text | SCENE B
 *
 * mark.get('scenes').scene = 'B';
 *
 * @class
 * @mixes markus.mixins.Element
 * @memberof markus.elements
 * @augments PIXI.Container
 */
export default class Scenes extends Element(PIXI.Container) {
  constructor(preset) {
    super(preset);

    /**
     * Scenes presets
     * @member {Preset[]}
     */
    this.scenes = this.presets;
  }

  /**
   * Editable prop. Current scene id
   * @member {string}
   */
  set scene(id) {
    for(let i = 0; i < this.scenes.length; i++) {
      if(this.scenes[i].id === id) {
        this._scene && this.mark.remove(this._scene, this);
        this._scene = this.mark.add(this.scenes[i], this);
      }
    }
  }
  get scene() {
    return this._scene;
  }
}