diff --git a/app.js b/app.js
index d2186ab31d42f0d50e25111a3314fc4bf320ea50..6387536917ab4ecae937adeba90440a4e8215374 100644
--- a/app.js
+++ b/app.js
@@ -3,7 +3,7 @@ var argv = require('yargs')
.usage('Usage: $0 [options]')
.alias('H', 'host').default('H','0.0.0.0')
.alias('p', 'port').default('p','3000')
- .boolean('lonpoll')
+ .boolean('longpoll')
.help('h').alias('h', 'help')
.argv;
var console = require("./colourConsole");
diff --git a/client/Grid.js b/client/Grid.js
index 8d8b70b15bcb0e08106ad2e6f701d9c12914a276..46b08e2f81b9f1fdc2ea992553486c71e8274782 100644
--- a/client/Grid.js
+++ b/client/Grid.js
@@ -94,12 +94,13 @@ Grid.prototype.ondrop = function(x,y,event){
var effect = triggeredCard.effect,
prom;
if(effect == "replace" && action.type != "replace"){
- effect = undefined;
+ prom = Promise.resolve([]);
+ } else {
+ prom = this.doEffect(triggeredCard,action).then(function(params){
+ params.unshift(triggeredCard.id);
+ return params;
+ })
}
- this.doEffect(effect,action).then(function(params){
- if(effect !== undefined){
- params.unshift(card.id);
- }
prom.then(function(params){
ws.send({
type:"playCards",
@@ -109,8 +110,9 @@ Grid.prototype.ondrop = function(x,y,event){
});
};
-Grid.prototype.doEffect = function(effect,action){
+Grid.prototype.doEffect = function(card,action){
var that = this,
+ effect = card.effect;
switch(effect){
case "draw":
return getUserSelection("Select a card to draw",[
@@ -124,7 +126,7 @@ Grid.prototype.doEffect = function(effect,action){
"Select card to copy",
function(n){return n.effect && n.effect != "replace" && n.effect != "copy";}
).then(function(card){
- return that.doEffect(card.effect).then(function(n){
+ return that.doEffect(card).then(function(n){
n.unshift(card.id);
return n;
});
diff --git a/client/demo/index.html b/client/demo/index.html
index 80cf0675abd5d027cd760c67792277e722cfa2f1..26a93b350f0372ddcbd528b6be1879260e404e7c 100644
--- a/client/demo/index.html
+++ b/client/demo/index.html
@@ -65,10 +65,10 @@
-
+
-
+
diff --git a/server/Game.js b/server/Game.js
index 21395a9737fdb2a0e0285708964cc50268262a3f..41f852d43165daea958f0df6056445d716084689 100644
--- a/server/Game.js
+++ b/server/Game.js
@@ -39,34 +39,29 @@ Game.prototype.loadCards = function(file){
* @param {Client} Client The client who made the play
* @return {Array} List of Card id's and positions that should be reported back to the client to update their grid
*/
-Game.prototype.onPlay = function(cards,params,client){
- var effect;
- if(params.length > 0){
- effect = this.cardList[params.shift()].effect;
- }
- if(effect == "replace"){
- this.grid.replaceCard(params[0],cards[0].id);
- return [{id:params[0],position:null},cards[0]];
+Game.prototype.onPlay = function(cards,params,client){;
+ if(params.length > 0 && this.cardList[params[0]].effect == "replace"){
+ this.grid.replaceCard(params[1],params.shift());
+ return [{id:params.shift(),position:null},cards[0]];
} else {
cards.forEach(c => this.grid.addCard(c.position,c.id));
- return cards.concat(this.resolveEffect(params));
+ return cards.concat(this.resolveEffect(params))
}
};
Game.prototype.resolveEffect = function(params){
- if(params.length === 0){
- console.warn("Empty effect paramaters - this is only normal if no effect triggered");
+ if(params.length == 0){
+ console.warn("Empty effect paramaters - this is only normal if no effect triggered")
return [];
}
- var effect = this.cardList[params.shift()].effect;
+ var effect = this.cardList[params.shift()].effect
if(effect in this.effects){
return this.effects[effect].call(this,params);
} else {
console.warn("No handler for effect",effect);
return [];
}
-};
-
+}
Game.prototype.effects = {
swap:function(params){
var swappedCards = this.grid.swapCards([params[0],params[1]]);
@@ -76,7 +71,7 @@ Game.prototype.effects = {
);
},
copy:Game.prototype.resolveEffect
-};
+}
/*Game Packets*/
Game.prototype.packets={};
diff --git a/server/room.js b/server/room.js
index 455083b1cbf7232c3d713f92fe3b77dcc01684b3..6e17a186c9c79da597e16b0f0fd22a39b7411a8b 100644
--- a/server/room.js
+++ b/server/room.js
@@ -47,7 +47,7 @@ Room.prototype.hooks = {
this.broadcast(data);
},
playCards:function(data,client){ //XXX should be in Game.js
- data.cards = this.game.onPlay(data.cards,data.effect,data.params,client);
+ data.cards = this.game.onPlay(data.cards,data.params,client);
data.client = client;
data.type = "playCards";
this.broadcast(data);