showChooseHand() {
    return new Promise((resolve, reject) => {
      this._prepareCardsForStartingHand();

      // show cards
      const cardNodes = this.getCardNodes();
      const numCards = CONFIG.STARTING_HAND_SIZE;
      let showDelay = 0.0;
      for (let i = 0; i < numCards; i++) {
        const cardNode = cardNodes[i];
        cardNode.setSdkCardFromHandIndex(i);
        cardNode.stopAnimations();

        showDelay += CONFIG.STAGGER_MEDIUM_DELAY;

        // fade in after delay
        cardNode.setOpacity(0.0);
        const fadeAction = cc.sequence(
          cc.delayTime(showDelay),
          cc.fadeTo(CONFIG.FADE_MEDIUM_DURATION, 255).easing(cc.easeExponentialIn()),
        );
        cardNode.addAnimationAction(fadeAction);
        cardNode.runAction(fadeAction);
      }

      // delay and then resolve
      this.runAction(cc.sequence(
        cc.delayTime(showDelay + 0.5),
        cc.callFunc(() => {
          resolve();
        }),
      ));
    });
  }
Shows the choices for the starting hand and mulligan.