showActiveHand() {
    const cardNodes = this.getCardNodes();
    const numCards = cardNodes.length;
    // card spacing assumes # cards + discard node + end turn
    const cardsStartPosition = UtilsEngine.getCardsInHandStartPosition();
    const cardsEndPosition = UtilsEngine.getCardsInHandEndPosition();
    const dx = (cardsEndPosition.x - cardsStartPosition.x) / (numCards - 0.25);

    // card nodes
    let showDelay = 0.0;
    for (let i = 0; i < numCards; i++) {
      const cardPosition = cc.p(cardsStartPosition.x + CONFIG.HAND_CARD_SIZE * 0.125 + dx * i, cardsStartPosition.y);
      showDelay += CONFIG.STAGGER_MEDIUM_DELAY;
      this._showActiveCard(i, cardPosition, showDelay);
    }

    // delay a little extra then set as active
    if (SDK.GameSession.getInstance().getIsDeveloperMode()) {
      showDelay = 0.0;
    } else {
      showDelay += CONFIG.MOVE_SLOW_DURATION * 0.5;
    }
    this.runAction(cc.sequence(
      cc.delayTime(showDelay),
      cc.callFunc(() => {
        // replace node
        if (!this._replaceNode.getIsDisabled()) {
          this._replaceNode.setOpacity(0.0);
          this._replaceNode.fadeTo(CONFIG.FADE_FAST_DURATION, 255.0);
        }

        // set active
        this.setStatus(BottomDeckLayer.STATUS.ACTIVE);
      }),
    ));
  }
Shows the current active hand after drawing the starting hand.