'));
}
@@ -335,6 +343,43 @@ var Game = {
},
+ displayCards0: function() {
+ var self = this;
+ if (self.cards0.length == 0) {
+ return false;
+ }
+
+
+ $.each(self.cards0, function(index, card){
+ var cardNode = $('
', {
+ class: "card"
+ }).appendTo(self.$board0);
+
+
+ cardNode.data({
+ 'id': card.id,
+ 'shape': card.shape,
+ 'fill': card.fill,
+ 'color': card.color,
+ 'number': card.number
+ });
+
+ var shapeNode = $("
");
+ shapeNode.addClass('shape ' + card.color + ' ' + card.shape + ' ' + card.fill);
+
+ for (var i = 0; i < card.number; i++) {
+ cardNode.append(shapeNode.clone());
+ }
+ self.$board0.append(cardNode);
+
+ // display 4 cards per row
+ if ((index+1) % 3 === 0) {
+ self.$board0.append($('
'));
+ }
+
+ });
+
+ },
@@ -724,8 +769,27 @@ var Game = {
+ setCardListeners0: function() {
+ var self = this;
+
+ // what happens when a card is clicked:
+ this.$board0.on('click', '.card', function(e) {
+ e.stopImmediatePropagation();
+ var card = e.currentTarget;
+ // if card is new, add it, otherwise remove it
+ var ids = $.map(self.selected0, function(el) { return $(el).data("id");});
+ if (ids.indexOf($(card).data('id')) >= 0) {
+ self.deselectCard0(card);
+ } else {
+ self.selectCard0(card);
+ }
+ if (self.selected0.length === 3) {
+ self.silentSubmission0();
+ }
+ });
+ },
setCardListeners: function() {
var self = this;
@@ -847,6 +911,14 @@ var Game = {
+ setPageListeners0: function() {
+ var self = this;
+
+ // if the user clicks on the page outside the game board, clear selected
+ $(document).on('click', function() {
+ self.clearSelections0.call(self);
+ });
+ },
setPageListeners: function() {
var self = this;
@@ -903,6 +975,15 @@ var Game = {
+ selectCard0: function(card) {
+ $(card).addClass('selected');
+ this.selected0.push(card);
+
+ if (this.selected0.length > 3) {
+ this.clearSelections0.call(this);
+ }
+
+ },
selectCard: function(card) {
$(card).addClass('selected');
@@ -963,7 +1044,14 @@ var Game = {
-
+ deselectCard0: function(card) {
+ var self = this;
+ var index = self.selected0.indexOf(card);
+ if (index > -1) {
+ self.selected0.splice(index, 1);
+ }
+ $(card).removeClass('selected');
+ },
deselectCard: function(card) {
var self = this;
var index = self.selected.indexOf(card);
@@ -1016,7 +1104,12 @@ var Game = {
-
+ clearSelections0: function() {
+ $.each(this.selected0, function(index, card) {
+ $(card).removeClass('selected');
+ });
+ this.selected0 = [];
+ },
clearSelections: function() {
$.each(this.selected, function(index, card) {
$(card).removeClass('selected');
@@ -1059,8 +1152,19 @@ var Game = {
+ validateSet0: function() {
+ var self = this;
+
+ var colors = $.map(self.selected0, function(el) { return $(el).data("color");});
+ var shapes = $.map(self.selected0, function(el) { return $(el).data("shape"); });
+ var fills= $.map(self.selected0, function(el) { return $(el).data("fill"); });
+
+
+ return (self.isSet(colors) && self.isSet(shapes) && self.isSet(fills));
+ },
+
validateSet: function() {
var self = this;
@@ -1070,17 +1174,18 @@ var Game = {
var numbers = $.map(self.selected, function(el) { return $(el).data("number"); });
+
return (self.isSet(colors) && self.isSet(shapes) && self.isSet(fills) && self.isSet(numbers));
},
validateSet35: function() {
var self = this;
- var colors = $.map(self.selected, function(el) { return $(el).data("color");});
- var shapes = $.map(self.selected, function(el) { return $(el).data("shape"); });
- var fills= $.map(self.selected, function(el) { return $(el).data("fill"); });
- var borders= $.map(self.selected, function(el) { return $(el).data("border"); });
- var numbers = $.map(self.selected, function(el) { return $(el).data("number"); });
+ var colors = $.map(self.selected1, function(el) { return $(el).data("color");});
+ var shapes = $.map(self.selected1, function(el) { return $(el).data("shape"); });
+ var fills= $.map(self.selected1, function(el) { return $(el).data("fill"); });
+ var borders= $.map(self.selected1, function(el) { return $(el).data("border"); });
+ var numbers = $.map(self.selected1, function(el) { return $(el).data("number"); });
return (self.isSet(colors) && self.isSet(shapes) && self.isSet(fills) && self.isSet(borders) && self.isSet(numbers));
@@ -1089,10 +1194,10 @@ var Game = {
validateSet44: function() {
var self = this;
- var colors = $.map(self.selected, function(el) { return $(el).data("color");});
- var shapes = $.map(self.selected, function(el) { return $(el).data("shape"); });
- var fills= $.map(self.selected, function(el) { return $(el).data("fill"); });
- var numbers = $.map(self.selected, function(el) { return $(el).data("number"); });
+ var colors = $.map(self.selected2, function(el) { return $(el).data("color");});
+ var shapes = $.map(self.selected2, function(el) { return $(el).data("shape"); });
+ var fills= $.map(self.selected2, function(el) { return $(el).data("fill"); });
+ var numbers = $.map(self.selected2, function(el) { return $(el).data("number"); });
return (self.isSet4(colors) && self.isSet4(shapes) && self.isSet4(fills) && self.isSet4(numbers));
@@ -1101,11 +1206,11 @@ var Game = {
validateSet45: function() {
var self = this;
- var colors = $.map(self.selected, function(el) { return $(el).data("color");});
- var shapes = $.map(self.selected, function(el) { return $(el).data("shape"); });
- var fills= $.map(self.selected, function(el) { return $(el).data("fill"); });
- var borders= $.map(self.selected, function(el) { return $(el).data("border"); });
- var numbers = $.map(self.selected, function(el) { return $(el).data("number"); });
+ var colors = $.map(self.selected3, function(el) { return $(el).data("color");});
+ var shapes = $.map(self.selected3, function(el) { return $(el).data("shape"); });
+ var fills= $.map(self.selected3, function(el) { return $(el).data("fill"); });
+ var borders= $.map(self.selected3, function(el) { return $(el).data("border"); });
+ var numbers = $.map(self.selected3, function(el) { return $(el).data("number"); });
return (self.isSet4(colors) && self.isSet4(shapes) && self.isSet4(borders) && self.isSet4(fills) && self.isSet4(numbers));
@@ -1114,11 +1219,11 @@ var Game = {
validateSet55: function() {
var self = this;
- var colors = $.map(self.selected, function(el) { return $(el).data("color");});
- var shapes = $.map(self.selected, function(el) { return $(el).data("shape"); });
- var fills= $.map(self.selected, function(el) { return $(el).data("fill"); });
- var borders= $.map(self.selected, function(el) { return $(el).data("border"); });
- var numbers = $.map(self.selected, function(el) { return $(el).data("number"); });
+ var colors = $.map(self.selected4, function(el) { return $(el).data("color");});
+ var shapes = $.map(self.selected4, function(el) { return $(el).data("shape"); });
+ var fills= $.map(self.selected4, function(el) { return $(el).data("fill"); });
+ var borders= $.map(self.selected4, function(el) { return $(el).data("border"); });
+ var numbers = $.map(self.selected4, function(el) { return $(el).data("number"); });
return (self.isSet5(colors) && self.isSet5(shapes) && self.isSet5(fills) && self.isSet5(borders) && self.isSet5(numbers));
@@ -1142,9 +1247,6 @@ var Game = {
$.each(arr, function(i, el){
if($.inArray(el, unique) === -1) unique.push(el);
});
-
-
- //console.log(unique);
return unique.length === 1 || unique.length === 3;
},
@@ -1183,7 +1285,12 @@ var Game = {
-
+ silentSubmission0: function() {
+ var valid = this.validateSet0();
+ if (valid) {
+ this.submitSet0();
+ }
+ },
silentSubmission: function() {
var valid = this.validateSet();
if (valid) {
@@ -1220,8 +1327,37 @@ var Game = {
+ submitSet0: function() {
+ var self = this;
+ var ids = $.map(self.selected0, function(el) { return $(el).data("id");});
+ // ajax request to get initial set of cards
+ var newCardRequest = $.ajax({
+ url: 'set.php?action=submit0',
+ type: 'GET',
+ dataType: 'json',
+ success: function(data) {
+ self.clearCards0(ids, data);
+
+ // to do - implement game complete check on server
+ if (!data.gameComplete) {
+ self.set0 = 0;
+ //self.updateCards(data);
+ //self.existingSet0();
+ self.increaseScore0();
+ } else {
+ self.gameWon();
+ }
+ },
+ error: function() {
+ console.log(arguments);
+ }
+ });
+
+ this.clearSelections0();
+ },
+
submitSet: function() {
var self = this;
var ids = $.map(self.selected, function(el) { return $(el).data("id");});
@@ -1236,8 +1372,9 @@ var Game = {
// to do - implement game complete check on server
if (!data.gameComplete) {
+ self.set = 0;
//self.updateCards(data);
- self.existingSet();
+ //self.existingSet();
self.increaseScore();
} else {
self.gameWon();
@@ -1264,8 +1401,9 @@ var Game = {
self.clearCards1(ids,data);
// to do - implement game complete check on server
if (!data.gameComplete) {
+ self.set1 = 0;
//self.updateCards1(data);
- self.existingSet1();
+ //self.existingSet1();
self.increaseScore1();
} else {
self.gameWon();
@@ -1290,11 +1428,13 @@ var Game = {
type: 'GET',
dataType: 'json',
success: function(data) {
+ self.set2 = 0;
self.clearCards2(ids,data);
// to do - implement game complete check on server
if (!data.gameComplete) {
+
//self.updateCards2(data);
- self.existingSet2();
+ //self.existingSet2();
self.increaseScore2();
} else {
self.gameWon();
@@ -1322,8 +1462,9 @@ var Game = {
self.clearCards3(ids,data);
// to do - implement game complete check on server
if (!data.gameComplete) {
+ self.set3 = 0;
//self.updateCards3(data);
- self.existingSet3();
+ //self.existingSet3();
self.increaseScore3();
} else {
self.gameWon();
@@ -1352,8 +1493,9 @@ var Game = {
self.clearCards4(ids,data);
// to do - implement game complete check on server
if (!data.gameComplete) {
+ self.set4 = 0;
//self.updateCards4(data);
- self.existingSet4();
+ //self.existingSet4();
self.increaseScore4();
} else {
self.gameWon();
@@ -1377,12 +1519,26 @@ var Game = {
-
+ clearCards0: function(ids,data) {
+ var self = this;
+ this.selected0 = [];
+ this.$board0.empty();
+ var cardIds = $.map(self.cards0, function(card) { return card.id; });
+ console.log(cardIds);
+ $.each(ids, function(idx, id) {
+ var location = cardIds.indexOf(id);
+ if (location > -1) {
+ console.log(cardIds[location]);
+ cardIds.splice(location, 1);
+ self.cards0.splice(location, 1, data[idx]);
+ }
+ });
+ this.displayCards0();
+ console.log(cardIds);
+ console.log(self.cards0);
+ },
clearCards: function(ids,data) {
- // remove submitted cards game's card array and clear the board
-
-
var self = this;
this.selected = [];
this.$board.empty();
@@ -1508,8 +1664,9 @@ var Game = {
-
-
+ increaseScore0: function() {
+ this.$score0.html(++this.score0);
+ },
increaseScore: function() {
this.$score.html(++this.score);
},
@@ -1554,7 +1711,7 @@ var Game = {
Game.deal();
-
+/*
var canvases = document.getElementsByClassName(' red solid');
console.log(canvases);