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

      let showDelay = 0.0;
      const cardNodes = this.getCardNodes();
      const mulliganedCardNodes = [];
      for (var i = 0, il = mulliganIndices.length; i < il; i++) {
        const cardIndex = mulliganIndices[i];
        var cardNode = cardNodes[cardIndex];
        if (cardNode != null) {
          // show card being drawn
          cardNode.setOpacity(255.0);
          showDelay += cardNode.showDraw(cardIndex, showDelay) * 0.5;

          // remember card
          mulliganedCardNodes.push(cardNode);
        }
      }

      // reset all kept cards
      const keepCardNodes = _.difference(cardNodes, mulliganedCardNodes);
      for (var i = 0, il = keepCardNodes.length; i < il; i++) {
        var cardNode = keepCardNodes[i];
        cardNode.resetHighlightAndSelection();
      }

      // delay and then resolve
      this.runAction(cc.sequence(
        cc.delayTime(showDelay),
        cc.callFunc(() => {
          resolve();
        }),
      ));
    });
  }
Shows the starting hand being drawn.