diff options
author | Einar Egilsson <einar@einaregilsson.com> | 2012-05-16 14:55:02 +0200 |
---|---|---|
committer | Einar Egilsson <einar@einaregilsson.com> | 2012-05-16 14:55:02 +0200 |
commit | 4d4f85a21898437991e0182e197cdb5594f2c892 (patch) | |
tree | db3841752afe327c189cf2b780fbeb79eba59e5a | |
parent | c011116afd1e7f3f28692c5d5a375199f2d2fa8f (diff) |
Small fixes
-rw-r--r-- | cards.js | 114 | ||||
-rw-r--r-- | demo.html | 1 |
2 files changed, 99 insertions, 16 deletions
@@ -204,16 +204,50 @@ var cards = (function() { } }, - immediateRender : function() { + init : function(options) { + options = options || {}; + this.x = options.x || $(table.el).width()/2; + this.y = options.y || $(table.el).height()/2; + this.faceUp = options.faceUp; + }, + + render : function(options) { + options = options || {}; + var speed = options.speed || ANIMATION_SPEED; + this.calcPosition(options); for (var i=0;i<this.length;i++) { var card = this[i]; - if (this.faceUp) { - card.showCard(); - } else { - card.hideCard(); - } zIndexCounter++; - $(card.el).css({top : card.targetTop, left: card.targetLeft, 'z-index' : zIndexCounter}); + card.moveToFront(); + var top = parseInt($(card.el).css('top')); + var left = parseInt($(card.el).css('left')); + if (top != card.targetTop || left != card.targetLeft) { + var props = {top:card.targetTop, left:card.targetLeft}; + if (options.immediate) { + $(card.el).css(props); + } else { + $(card.el).animate(props, speed); + } + } + } + var me = this; + var flip = function(){ + for (var i=0;i<me.length;i++) { + if (me.faceUp) { + me[i].showCard(); + } else { + me[i].hideCard(); + } + } + } + if (options.immediate) { + flip(); + } else { + setTimeout(flip, speed /2); + } + + if (options.callback) { + setTimeout(options.callback, speed); } }, @@ -227,15 +261,13 @@ var cards = (function() { }); function Deck(options) { - options = options || {}; - this.x = options.x || $(table.el).width()/2; - this.y = options.y || $(table.el).height()/2; - this.faceUp = options.faceUp; + this.init(options); } Deck.prototype = new Container(); Deck.prototype.extend({ - render : function(options) { + calcPosition : function(options) { + options = options || {}; var left = Math.round(this.x-CARD_SIZE.width/2, 0); var top = Math.round(this.y-CARD_SIZE.height/2, 0); for (var i=0;i<this.length;i++) { @@ -246,13 +278,61 @@ var cards = (function() { this[i].targetTop = top; this[i].targetLeft = left; } - if (options.immediate) { - this.immediateRender(); - } else { - + }, + + toString : function() { + return 'Deck'; + }, + + deal : function(count, hands) { + if (!this.dealCounter) { + this.dealCounter = count * hands.length; + } + } + }); + + function Hand(options) { + this.init(options); + } + Hand.prototype = new Container(); + Hand.prototype.extend({ + calcPosition : function(options) { + options = options || {}; + var width = CARD_SIZE.width + (this.length-1)*CARD_PADDING; + var left = Math.round(this.x - width/2); + var top = Math.round(this.y-CARD_SIZE.height/2, 0); + for (var i=0;i<this.length;i++) { + this[i].targetTop = top; + this[i].targetLeft = left+i*CARD_PADDING; + } + }, + + toString : function() { + return 'Hand'; + } + }); + + function Pile(options) { + this.init(options); + } + + Pile.prototype = new Container(); + Pile.prototype.extend({ + calcPosition : function(options) { + options = options || {}; + }, + + toString : function() { + return 'Pile'; + }, + + deal : function(count, hands) { + if (!this.dealCounter) { + this.dealCounter = count * hands.length; } } }); + return { init : init, @@ -261,6 +341,8 @@ var cards = (function() { Card : Card, Container : Container, Deck : Deck, + Hand : Hand, + Pile : Pile, shuffle: shuffle }; })(); @@ -49,6 +49,7 @@ </head> <body> <h1>Cards.js</h1> + <embed src="svg/c6.svg" type="image/svg+xml" /> <code> //Start by initalizing the library cards.init({table:'#card-table'}); |