ctor(playerId) {
    // initialize properties that may be required in init
    this.mouseScreenPosition = cc.p(-1, -1);
    this.mouseGlobalScaleInvertedScreenPosition = cc.p(-1, -1);
    this.mouseScreenDownPosition = cc.p(-1, -1);
    this.mouseGlobalScaleInvertedScreenDownPosition = cc.p(-1, -1);
    this.mouseScreenUpPosition = cc.p(-1, -1);
    this.mouseGlobalScaleInvertedScreenUpPosition = cc.p(-1, -1);
    this.mouseBoardPosition = cc.p(-1, -1);
    this.mouseBoardDownPosition = cc.p(-1, -1);
    this.mouseBoardUpPosition = cc.p(-1, -1);

    this.setPlayerId(playerId);

    this._resetSelectedTileData();
    this._resetPreviewTileData();
    this._resetCardTileData();
    this._resetPathTileData();
    this._validTargetNodes = [];
    this.mouseOverTiles = [];
    this.mouseOverSpellTiles = [];
    this.cardsWithFollowupStack = [];
  }
*************************************************************************
 Player
 var Batch = cc.Class
 Player.create()
 // used to manage individual view properties of each player
**************************************************************************