showDraw(sdkCard, showDelay) {
    let showDuration = 0.0;
    const lastSdkCard = this.sdkCard;

    if (sdkCard != null) {
      // set sdk card if provided
      this.setSdkCard(sdkCard, 0.0);
    }

    // show draw visuals only if card changes
    if (this.sdkCard && (lastSdkCard == null || this.sdkCard.getBaseCardId() !== lastSdkCard.getBaseCardId())) {
      if (showDelay == null) { showDelay = 0.0; }

      // add show times to show duration
      showDuration = CONFIG.FADE_FAST_DURATION * 2;

      // get resources promise
      const whenCardResourcesReadyPromise = this.whenResourcesReady(this.getCardResourceRequestId());

      // hide elements
      whenCardResourcesReadyPromise.then((cardResourceRequestId) => {
        if (!this.getAreResourcesValid(cardResourceRequestId)) return; // card has changed
        this.cardSprite.fadeToInvisible();
      });

      // wait and animate in
      const drawAction = cc.sequence(
        cc.delayTime(showDelay),
        cc.callFunc(() => {
          // loop glowing rings
          this._glowRings.resumeSystem();

          whenCardResourcesReadyPromise.then((cardResourceRequestId) => {
            if (!this.getAreResourcesValid(cardResourceRequestId)) return; // card has changed

            // play the card draw sfx
            audio_engine.current().play_effect(RSX.sfx_ui_card_draw.audio);

            // set sprite draw visuals
            this.cardSprite.setLeveled(true);
            this.cardSprite.setLevelsInWhite(120);
            this.cardSprite.setLevelsInGamma(2.0);
            this.cardSprite.setTint(cc.color(255, 255, 255, 255));
            this.cardSprite.setHighlighted(true);

            const tintFadeDuration = 0.8;

            // fade sprite in
            this.cardSprite.setVisible(true);
            const subDrawAction = cc.sequence(
              cc.fadeIn(CONFIG.FADE_FAST_DURATION),
              cc.spawn(
                cc.actionTween(CONFIG.FADE_MEDIUM_DURATION, TweenTypes.TINT_FADE, 1.0, 0.0),
                cc.callFunc(() => {
                  this.cardSprite.fadeOutHighlight(tintFadeDuration - CONFIG.FADE_FAST_DURATION, cc.easeIn(2.0));
                }),
              ),
              cc.spawn(
                cc.callFunc(() => {
                  this._glowRings.stopSystem();
                }),
                cc.actionTween(CONFIG.FADE_FAST_DURATION, 'levelsInWhite', 120.0, 255.0),
                cc.actionTween(CONFIG.FADE_FAST_DURATION, 'levelsInGamma', 2.0, 1.0),
              ),
              cc.callFunc(() => {
                this.cardSprite.setLeveled(false);
              }),
            );
            this.addAnimationAction(subDrawAction);
            this.cardSprite.runAction(subDrawAction);
          });
        }),
      );
      this.addAnimationAction(drawAction);
      this.runAction(drawAction);
    }

    return showDuration;
  }
Shows draw of signature card if different from existing.
@param {Card} sdkCard
@param {Number} [showDelay=0.0]
@returns {number} show duration