_constructCrateSprites() {
    return this.whenRequiredResourcesReady().then((requestId) => {
      if (!this.getAreResourcesValid(requestId)) return; // load invalidated or resources changed

      this._lootCrateContainerNode = new cc.Node();
      this.addChild(this._lootCrateContainerNode, this._zOrderCrate);

      // BACK LEFT
      this._lootCrateBackLeftSprite = BaseSprite.create(this._getLootCrateBackLeftSpriteIdentifier());
      this._lootCrateContainerNode.addChild(this._lootCrateBackLeftSprite);

      // BACK RIGHT
      this._lootCrateBackRightSprite = BaseSprite.create(this._getLootCrateBackRightSpriteIdentifier());
      this._lootCrateContainerNode.addChild(this._lootCrateBackRightSprite);

      // BOTTOM
      this._lootCrateBottomSprite = BaseSprite.create(this._getLootCrateBottomSpriteIdentifier());
      this._lootCrateContainerNode.addChild(this._lootCrateBottomSprite);

      // SPHERE
      this._lootCrateSphereSprite = BaseSprite.create(this._getLootCrateSphereSpriteIdentifier());
      this._lootCrateContainerNode.addChild(this._lootCrateSphereSprite);

      // FRONT RIGHT
      this._lootCrateFrontRightSprite = BaseSprite.create(this._getLootCrateFrontRightSpriteIdentifier());
      this._lootCrateContainerNode.addChild(this._lootCrateFrontRightSprite);

      // FRONT LEFT
      this._lootCrateFrontLeftSprite = BaseSprite.create(this._getLootCrateFrontLeftSpriteIdentifier());
      this._lootCrateContainerNode.addChild(this._lootCrateFrontLeftSprite);

      // TOP
      this._lootCrateTopSprite = BaseSprite.create(this._getLootCrateTopSpriteIdentifier());
      this._lootCrateContainerNode.addChild(this._lootCrateTopSprite);

      const centerPosition = this.getCenterPosition();
      this._lootCrateContainerNode.setPosition(centerPosition);

      // RARITY FLARE BEHIND
      this._flareBehindCrate = new FXRarityFlareSprite();
      this._flareBehindCrate.setBlendFunc(cc.SRC_ALPHA, cc.ONE);
      this._flareBehindCrate.setVisible(false);
      this._flareBehindCrate.setScale(10.0);
      this._flareBehindCrate.setScaleY(5.0);
      this._flareBehindCrate.setPosition(centerPosition);
      this.addChild(this._flareBehindCrate, this._zOrderBehindCrate);

      this._idleParticles = BaseParticleSystem.create(RSX.loot_crate_idle_particles.plist);
      this._idleParticles.setPosition(centerPosition.x + 50.0, centerPosition.y);
      this._idleParticles.stopSystem();
      this.addChild(this._idleParticles, this._zOrderBehindCrate);

      this._idleParticles2 = BaseParticleSystem.create(RSX.loot_crate_idle_particles.plist);
      this._idleParticles2.setPosition(centerPosition.x - 50.0, centerPosition.y);
      this._idleParticles2.setRotation(180);
      this._idleParticles2.stopSystem();
      this.addChild(this._idleParticles2, this._zOrderBehindCrate);

      // explosion flare
      this.flare = FXLensFlareSprite.create();
      this.flare.setBlendFunc(cc.SRC_ALPHA, cc.ONE);
      this.flare.setPosition(centerPosition);
      this.flare.setScale(2.0);
      this.flare.setPulseRate(0.0);
      this.flare.setSpeed(2.0);
      this.flare.setWispSize(0.2);
      this.flare.setAnchorPoint(cc.p(0.5, 0.5));
      this.flare.setVisible(false);
      this.addChild(this.flare, this._zOrderInfrontOfCrate);
    });
  }
Helper - Constructs the pieces of the loot crate and adds them to the root node
@private