ctor(playerId) {
    this._playerId = playerId;

    // preallocate empty artifact nodes
    this._artifactNodes = [];
    for (var i = 0; i < CONFIG.MAX_ARTIFACTS; i++) {
      const artifactNode = ArtifactNode.create();
      artifactNode.setVisible(false);
      this._artifactNodes.push(artifactNode);
    }

    // node used to show signature cards
    this._signatureCardNode = SignatureCardNode.create();
    this._signatureCardNode.setVisible(false);

    // do super ctor
    this._super();

    // add nodes
    for (var i = 0, il = this._artifactNodes.length; i < il; i++) {
      this.addChild(this._artifactNodes[i]);
    }
    this.addChild(this._signatureCardNode);
  }
*************************************************************************
 PlayerLayer
 - abstract layer for showing a player in a game
**************************************************************************