From e18ada8eb9531ff7ccc5cea595e04bc1ebd191d0 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Sat, 12 Sep 2015 12:51:02 +0200 Subject: [PATCH] ApplyRules --- code/CandyFucker.js | 160 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 159 insertions(+), 1 deletion(-) diff --git a/code/CandyFucker.js b/code/CandyFucker.js index a7b2ce7..b9b654d 100644 --- a/code/CandyFucker.js +++ b/code/CandyFucker.js @@ -49,6 +49,8 @@ var CandyFucker = function(idScreen){ this.Grid = null; this.GridOffset = {X: 0, Y: 0}; this.CandyTypes = ["Red", "Blue", "Cyan", "Green", "Yellow"]; + this.Locked = false; + this.Falling = false; this.Changed = false; window.Images.LoadImages( @@ -70,7 +72,31 @@ CandyFucker.prototype = { this.BuildGrid(15, 15); }, Proc: function(gameScreen){ - + if(this.Locked){ + if(this.Falling){ + if(!this.CandyFall()){ + this.Falling = false; + console.log("Stoped"); + } + }else{ + if(this.ApplyRules()){ + this.Falling = true; + console.log("Falling"); + }else{ + this.Locked = false; + console.log("Stoped"); + } + } + }else{ + if(this.Changed){ + if(this.ApplyRules()){ + this.Locked = true; + this.Falling = true; + console.log("Falling"); + } + } + } + this.Changed = false; }, End: function(gameScreen){ }, GetCandy: function(x, y){ @@ -106,6 +132,138 @@ CandyFucker.prototype = { } this.Changed = true; }, + ScanHorizontalRuns: function(){ + var x,y; + var xPrev,yPrev; + var currentColor; + var prevColor; + var horizontalRuns = []; + for(y=0;y2){ + if(prevColor!=""){ + // Run found + horizontalRuns.push({ + Start: {X: xPrev, Y: yPrev}, + End: {X: x-1, Y: y}, + Color: prevColor + }); + } + } + xPrev = x; + yPrev = y; + prevColor = currentColor; + } + } + if((x-xPrev)>2){ + if(prevColor!=""){ + // Run found + horizontalRuns.push({ + Start: {X: xPrev, Y: yPrev}, + End: {X: x-1, Y: y}, + Color: prevColor + }); + } + } + } + return horizontalRuns; + }, + ScanVerticalRuns: function(){ + var x,y; + var xPrev,yPrev; + var currentColor; + var prevColor; + var verticalRuns = []; + for(x=0;x2){ + if(prevColor!=""){ + // Run found + verticalRuns.push({ + Start: {X: xPrev, Y: yPrev}, + End: {X: x, Y: y-1}, + Color: prevColor + }); + } + } + xPrev = x; + yPrev = y; + prevColor = currentColor; + } + } + if((y-yPrev)>2){ + if(prevColor!=""){ + // Run found + verticalRuns.push({ + Start: {X: xPrev, Y: yPrev}, + End: {X: x, Y: y-1}, + Color: prevColor + }); + } + } + } + return verticalRuns; + }, + RemoveRuns: function(runs){ + var pointsMultiplier = 10; + var points = 0; + for(var i=0,n=runs.length;i0); + }, + CandyFall: function(){ + // FIXME: Implement this + }, Debug: false };