ctor(sdkCard) {
    // initialize properties that may be required in init
    const contentSize = cc.size(CONFIG.HAND_CARD_SIZE, CONFIG.HAND_CARD_SIZE);

    // card glow
    this.cardGlowSprite = FXGlowImageMap.create(RSX.signature_card_glow.img);
    this.cardGlowSprite.setPosition(contentSize.width * 0.5, contentSize.height * 0.5);
    this.cardGlowSprite.setGlowColor(CONFIG.OPPONENT_SIGNATURE_CARD_GLOW);
    this.cardGlowSprite.setVisible(false);
    this.cardGlowSprite.setOpacity(0.0);

    // card ring
    this.cardRingSprite = new BaseSprite(RSX.signature_card_ring.img);
    this.cardRingSprite.setPosition(contentSize.width * 0.5, contentSize.height * 0.5);

    // mana token
    this.manaTokenSprite = new BaseSprite(RSX.icon_mana.img);
    this.manaTokenSprite.setPosition(contentSize.width * 0.5, contentSize.height * 0.5 - 50.0);
    this.manaTokenSprite.setScale(0.65);

    // mana cost
    this.manaCostLabel = new cc.LabelTTF('', RSX.font_bold.name, 18);
    this.manaCostLabel.setAnchorPoint(0.5, 0.5);
    this.manaCostLabel.setPosition(this.manaTokenSprite.getPosition());

    // cooldown sprite
    this.cooldownTimerSprite = new FXTimerSprite();
    this.cooldownTimerSprite.setPosition(contentSize.width * 0.5, contentSize.height * 0.5);
    this.cooldownTimerSprite.setTextureRect(cc.rect(0, 0, contentSize.width, contentSize.height));
    this.cooldownTimerSprite.setColor(CONFIG.SIGNATURE_CARD_COOLDOWN_TIMER_COLOR);
    this.cooldownTimerSprite.setOpacity(CONFIG.SIGNATURE_CARD_COOLDOWN_TIMER_OPACITY);
    this.cooldownTimerSprite.setBGColor(CONFIG.SIGNATURE_CARD_COOLDOWN_TIMER_BG_COLOR);
    this.cooldownTimerSprite.setBGOpacity(CONFIG.SIGNATURE_CARD_COOLDOWN_TIMER_BG_OPACITY);
    this.cooldownTimerSprite.setProgress(1.0);
    this.cooldownTimerSprite.setScale(0.7);

    // cooldown icon sprite
    this.cooldownIconSprite = new BaseSprite(RSX.icon_cooldown_counter.img);
    this.cooldownIconSprite.setPosition(contentSize.width * 0.5, contentSize.height * 0.5 + 50.0);
    this.cooldownIconSprite.setScale(0.5);

    // cooldown label
    const cooldownLabelPosition = this.cooldownIconSprite.getPosition();
    this._cooldownLabel1 = new cc.LabelTTF('', RSX.font_bold.name, 22);
    this._cooldownLabel1.setAnchorPoint(0.5, 0.5);
    this._cooldownLabel1.setPosition(cooldownLabelPosition);
    this._cooldownLabel1.setFontFillColor(CONFIG.SIGNATURE_CARD_COOLDOWN_FONT_COLOR);

    // cooldown label alt
    this._cooldownLabel2 = new cc.LabelTTF('', RSX.font_bold.name, 22);
    this._cooldownLabel2.setAnchorPoint(0.5, 0.5);
    this._cooldownLabel2.setPosition(cooldownLabelPosition);
    this._cooldownLabel2.setFontFillColor(CONFIG.SIGNATURE_CARD_COOLDOWN_FONT_COLOR);

    this.cooldownLabel = this._cooldownLabel1;

    // glow rings
    this._glowRings = new BaseParticleSystem(RSX.ptcl_ring_glow_circle.plist);
    this._glowRings.setPosition(cc.p(contentSize.width * 0.5, contentSize.height * 0.5));
    this._glowRings.setPositionType(cc.ParticleSystem.TYPE_RELATIVE);
    this._glowRings.stopSystem();

    // lens flare that highlights from below
    this._flareSprite = FXLensFlareSprite.create();
    this._flareSprite.setBlendFunc(cc.SRC_ALPHA, cc.ONE);
    this._flareSprite.setScale(4.0);
    this._flareSprite.setPulseRate(0.0);
    this._flareSprite.setSpeed(2.0);
    this._flareSprite.setWispSize(0.3);
    this._flareSprite.setArmLength(0.2);
    this._flareSprite.setPosition(contentSize.width * 0.5, contentSize.height * 0.5);
    this._flareSprite.setVisible(false);

    // explosion particles
    this._explosionParticles = new BaseParticleSystem(RSX.explosion_small.plist);
    this._explosionParticles.setPosition(contentSize.width * 0.5, contentSize.height * 0.5);
    this._explosionParticles.setScale(2.0);
    this._explosionParticles.setAutoRemoveOnFinish(false);
    this._explosionParticles.stopSystem();

    // do super ctor
    this._super(sdkCard);

    // set content size to match tile size
    // this must be done after the cocos/super ctor
    this.setContentSize(contentSize);

    // add children after cocos/super ctor
    this.addChild(this.cardGlowSprite, -5);
    this.addChild(this._flareSprite, -4);
    this.addChild(this.cardRingSprite, -2);
    this.addChild(this.cooldownTimerSprite);
    this.addChild(this.cooldownIconSprite);
    this.addChild(this._cooldownLabel1);
    this.addChild(this._cooldownLabel2);
    this.addChild(this._glowRings);
    this.addChild(this.manaTokenSprite);
    this.addChild(this.manaCostLabel);
    this.addChild(this._explosionParticles);
  }
*************************************************************************
SignatureCardNode
var SignatureCardNode = SdkNode
SignatureCardNode.create()
 - node used to display cards in signature card slot
**************************************************************************