From e0b700c63b214b196f11a9b4cea7dda4ffa87f91 Mon Sep 17 00:00:00 2001 From: FCO Date: Tue, 19 Apr 2016 22:43:08 -0300 Subject: [PATCH 01/18] WiP: separete file for block --- samples/brick_breaker.js | 38 ++++++++------------ samples/brick_breaker_blocks/regularBlock.js | 19 ++++++++++ 2 files changed, 34 insertions(+), 23 deletions(-) create mode 100644 samples/brick_breaker_blocks/regularBlock.js diff --git a/samples/brick_breaker.js b/samples/brick_breaker.js index ac94cea..9a5904f 100644 --- a/samples/brick_breaker.js +++ b/samples/brick_breaker.js @@ -151,42 +151,34 @@ levels.add_level(function () { var blocks_space = 5; var r = w - (number_of_blocks * block_size + (number_of_blocks - 1) * blocks_space); for(var i = r / 2; i < w - (r / 2); i += block_size + blocks_space) { - var block = screen.createElement("Poligon"); + var block_conf = require("./brick_breaker_blocks/regularBlock.js"); + console.log(block_conf); block_counter++; - block.draw_colision_area = false; - block.solid = true; - block.do_not_colide_with = ["Border"]; - block.type = "Block"; - block.color = "#000000"; - block.x = i + block_size / 2; - block.y = 120 + j * 30; - block.add_vertice(-13, 0); - block.add_vertice(12, 0); - block.add_vertice(12, 15); - block.add_vertice(-13, 15); - block.going2destroy = going2destroy; - block.on_colide_with("ball", function(bola) { - score.add("block"); + var block = screen.createElement(block_conf.type); + block.randomPowerUp = randomPowerUp; + block.on_destroy = function() { block_counter--; - //this.do_not_colide_with = ["ball"]; this.on_colide_with("ball", function(){}); this.flutuate = false; this.going2destroy(150); this.velocity = bola.original_velocity.clone(); this.velocity.mod *= 0.1; - if(block_counter <= 0) { + if(this.block_counter <= 0) { setTimeout(function(){ alert("You Win!"); this._element_factory.screen.stop = true; }.bind(this), 100); - } else { - randomPowerUp(this, bola.velocity); } - }); + }; + block.score = score; + block.going2destroy = going2destroy; + block.x = i + block_size / 2; + block.y = 120 + j * 30; + block_conf.transformation.call(block); } } - var randomPowerUp = function (sourceBlock, velocity) { + function randomPowerUp(velocity) { var powerUpPercentage = .1; // 10% of change to receive a power up if(Math.random() <= powerUpPercentage){ // TODO: Create a Power Up factory and multiple types of power ups to randomize @@ -197,8 +189,8 @@ levels.add_level(function () { powerup.do_not_colide_with = ["Block"]; powerup.bounce_when_colide_with = ["Border"]; powerup.type = "PowerUp"; - powerup.x = sourceBlock.x - powerup.y = sourceBlock.y; + powerup.x = this.x + powerup.y = this.y; powerup.flutuate = false; powerup.velocity = velocity.clone(); powerup.velocity.mod *= 0.3; diff --git a/samples/brick_breaker_blocks/regularBlock.js b/samples/brick_breaker_blocks/regularBlock.js new file mode 100644 index 0000000..37a9f76 --- /dev/null +++ b/samples/brick_breaker_blocks/regularBlock.js @@ -0,0 +1,19 @@ +exports.symbol = "###"; +exports.type = "Poligon"; +exports.transformation = function(data) { + console.log(this); + this.draw_colision_area = false; + this.solid = true; + this.do_not_colide_with = ["Border"]; + this.type = "Block"; + this.color = "#000000"; + this.add_vertice(-13, 0); + this.add_vertice(12, 0); + this.add_vertice(12, 15); + this.add_vertice(-13, 15); + this.on_colide_with("ball", function(bola) { + this.score.add("block"); + this.on_destroy(); + this.randomPowerUp(bola.velocity); + }); +}; From 3e2be8ebfa4f590d76c84d88986b53748f6db4d4 Mon Sep 17 00:00:00 2001 From: FCO Date: Tue, 19 Apr 2016 23:09:17 -0300 Subject: [PATCH 02/18] Preload block and get it by symbol --- samples/brick_breaker.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/samples/brick_breaker.js b/samples/brick_breaker.js index 9a5904f..f6af2c5 100644 --- a/samples/brick_breaker.js +++ b/samples/brick_breaker.js @@ -32,6 +32,16 @@ create_lives(); var quad = screen.createElement("Poligon"); var bola = screen.createElement("Arc"); +require("./brick_breaker_blocks/regularBlock.js"); + +var blocks = {}; +[ + "regularBlock" +].forEach(function(block) { + var conf = require("./brick_breaker_blocks/" + block + ".js"); + blocks[conf.symbol] = conf; +}); + levels.starter = function () { quad.destroy(); bola.destroy(); @@ -151,8 +161,7 @@ levels.add_level(function () { var blocks_space = 5; var r = w - (number_of_blocks * block_size + (number_of_blocks - 1) * blocks_space); for(var i = r / 2; i < w - (r / 2); i += block_size + blocks_space) { - var block_conf = require("./brick_breaker_blocks/regularBlock.js"); - console.log(block_conf); + var block_conf = blocks["###"]; block_counter++; var block = screen.createElement(block_conf.type); block.randomPowerUp = randomPowerUp; From c009ba554bee01d09fe182a26ce07579e4c6e886 Mon Sep 17 00:00:00 2001 From: FCO Date: Tue, 19 Apr 2016 23:46:25 -0300 Subject: [PATCH 03/18] If symbol wasnt found, use the regular block and the symbol as color --- samples/brick_breaker.js | 62 ++++++++++++-------- samples/brick_breaker_blocks/regularBlock.js | 5 +- 2 files changed, 42 insertions(+), 25 deletions(-) diff --git a/samples/brick_breaker.js b/samples/brick_breaker.js index f6af2c5..1fa51a2 100644 --- a/samples/brick_breaker.js +++ b/samples/brick_breaker.js @@ -1,4 +1,6 @@ var Screen = require(".."); +require("./brick_breaker_blocks/regularBlock.js"); + var screen = new Screen(document.body); screen.has_gravity(0, 10); screen.color = "#FFFFFF"; @@ -32,15 +34,31 @@ create_lives(); var quad = screen.createElement("Poligon"); var bola = screen.createElement("Arc"); -require("./brick_breaker_blocks/regularBlock.js"); -var blocks = {}; -[ - "regularBlock" -].forEach(function(block) { - var conf = require("./brick_breaker_blocks/" + block + ".js"); - blocks[conf.symbol] = conf; -}); +function Blocks(files) { + this.blocks = {}; + files.forEach(function(block) { + var conf = require("./brick_breaker_blocks/" + block + ".js"); + this.blocks[conf.symbol] = conf; + }.bind(this)); + +} +Blocks.prototype = { + get: function (symbol) { + var block_conf, pars = {}; + if(symbol in this.blocks) { + block_conf = this.blocks[symbol]; + } else { + block_conf = this.blocks["###"]; + pars.color = symbol; + } + var block = screen.createElement(block_conf.type); + block_conf.transformation.call(block, pars); + return block; + } +}; + +var blocks = new Blocks(["regularBlock"]); levels.starter = function () { quad.destroy(); @@ -161,9 +179,8 @@ levels.add_level(function () { var blocks_space = 5; var r = w - (number_of_blocks * block_size + (number_of_blocks - 1) * blocks_space); for(var i = r / 2; i < w - (r / 2); i += block_size + blocks_space) { - var block_conf = blocks["###"]; block_counter++; - var block = screen.createElement(block_conf.type); + block = blocks.get("0f0"); block.randomPowerUp = randomPowerUp; block.on_destroy = function() { block_counter--; @@ -183,7 +200,6 @@ levels.add_level(function () { block.going2destroy = going2destroy; block.x = i + block_size / 2; block.y = 120 + j * 30; - block_conf.transformation.call(block); } } @@ -192,18 +208,18 @@ levels.add_level(function () { if(Math.random() <= powerUpPercentage){ // TODO: Create a Power Up factory and multiple types of power ups to randomize var powerup = screen.createElement("Poligon"); - powerup.visible = true; - powerup.color = "#4EA132"; - powerup.draw_colition_area = false - powerup.do_not_colide_with = ["Block"]; - powerup.bounce_when_colide_with = ["Border"]; - powerup.type = "PowerUp"; - powerup.x = this.x - powerup.y = this.y; - powerup.flutuate = false; - powerup.velocity = velocity.clone(); - powerup.velocity.mod *= 0.3; - powerup.velocity.ang *= -1; + powerup.visible = true; + powerup.color = "#4EA132"; + powerup.draw_colition_area = false + powerup.do_not_colide_with = ["Block"]; + powerup.bounce_when_colide_with = ["Border"]; + powerup.type = "PowerUp"; + powerup.x = this.x + powerup.y = this.y; + powerup.flutuate = false; + powerup.velocity = velocity.clone(); + powerup.velocity.mod *= 0.3; + powerup.velocity.ang *= -1; powerup.add_vertice(0, 0); powerup.add_vertice(7, 14); diff --git a/samples/brick_breaker_blocks/regularBlock.js b/samples/brick_breaker_blocks/regularBlock.js index 37a9f76..37d7b06 100644 --- a/samples/brick_breaker_blocks/regularBlock.js +++ b/samples/brick_breaker_blocks/regularBlock.js @@ -1,12 +1,13 @@ exports.symbol = "###"; exports.type = "Poligon"; exports.transformation = function(data) { - console.log(this); + var color = "#000000"; + if(data && data.color) color = data.color; this.draw_colision_area = false; this.solid = true; this.do_not_colide_with = ["Border"]; this.type = "Block"; - this.color = "#000000"; + this.color = color; this.add_vertice(-13, 0); this.add_vertice(12, 0); this.add_vertice(12, 15); From bedb0a11ed0f74c0f1fbf5f1a0cc377a20cee21f Mon Sep 17 00:00:00 2001 From: FCO Date: Tue, 19 Apr 2016 23:50:08 -0300 Subject: [PATCH 04/18] Fix block color for non safari browsers --- samples/brick_breaker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/brick_breaker.js b/samples/brick_breaker.js index 1fa51a2..cf58075 100644 --- a/samples/brick_breaker.js +++ b/samples/brick_breaker.js @@ -50,7 +50,7 @@ Blocks.prototype = { block_conf = this.blocks[symbol]; } else { block_conf = this.blocks["###"]; - pars.color = symbol; + pars.color = "#" + symbol; } var block = screen.createElement(block_conf.type); block_conf.transformation.call(block, pars); From b697871e0f7198695c288be60ef35403cc29e92e Mon Sep 17 00:00:00 2001 From: FCO Date: Wed, 20 Apr 2016 08:58:59 -0300 Subject: [PATCH 05/18] WiP: reading level file --- package.json | 5 +++-- samples/brick_breaker.js | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 68ade7f..ac47c1e 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "description": "Framework to create javascript games", "main": "index.js", "scripts": { - "build": "rm -rf build || true; mkdir -p build; cp samples/*.html build; for js in samples/*.js; do browserify $js > $(echo $js | perl -pe 's{^samples}{build}'); done", - "brickbreaker": "npm install; cd samples; budo brick_breaker.js --open --live --debug" + "build": "rm -rf build || true; mkdir -p build; cp samples/*.html build; for js in samples/*.js; do browserify -t brfs $js > $(echo $js | perl -pe 's{^samples}{build}'); done", + "brickbreaker": "npm install; cd samples; budo brick_breaker.js --open --live --debug -- -t brfs" }, "repository": { "type": "git", @@ -22,6 +22,7 @@ "budo": "^8.2.1" }, "dependencies": { + "brfs": "^1.4.3", "bulkify": "^1.2.0", "decamelize": "^1.2.0" } diff --git a/samples/brick_breaker.js b/samples/brick_breaker.js index cf58075..52462a2 100644 --- a/samples/brick_breaker.js +++ b/samples/brick_breaker.js @@ -1,5 +1,6 @@ var Screen = require(".."); require("./brick_breaker_blocks/regularBlock.js"); +var fs = require("fs"); var screen = new Screen(document.body); screen.has_gravity(0, 10); @@ -172,6 +173,8 @@ levels.add_level(function () { } }; + var level = fs.readFileSync(__dirname + "/brick_breaker_levels/level1.lvl"); + console.log(level.toString().match(/\S{3}|\n|\ +/g)); for(var j = 0; j < 3; j++) { var w = screen.width; var number_of_blocks = 25; From e2c586eba7b485d0419360daa98aa557c94807ee Mon Sep 17 00:00:00 2001 From: Fernando Oliveira Date: Wed, 20 Apr 2016 10:50:50 -0300 Subject: [PATCH 06/18] WiP: reading level file --- samples/brick_breaker.js | 74 ++++++++++++++----------- samples/brick_breaker_levels/level1.lvl | 7 +++ 2 files changed, 50 insertions(+), 31 deletions(-) create mode 100644 samples/brick_breaker_levels/level1.lvl diff --git a/samples/brick_breaker.js b/samples/brick_breaker.js index 52462a2..c29530b 100644 --- a/samples/brick_breaker.js +++ b/samples/brick_breaker.js @@ -173,39 +173,51 @@ levels.add_level(function () { } }; + var w = screen.width; + var number_of_blocks = 25; + var space_size = 5; + var block_size = 25; + var line_heigth = 30; + var blocks_space = 5; + var initial_i = 30; + var initial_j = 50; + var j = initial_j; + var i = initial_i; + var level = fs.readFileSync(__dirname + "/brick_breaker_levels/level1.lvl"); - console.log(level.toString().match(/\S{3}|\n|\ +/g)); - for(var j = 0; j < 3; j++) { - var w = screen.width; - var number_of_blocks = 25; - var block_size = 25; - var blocks_space = 5; - var r = w - (number_of_blocks * block_size + (number_of_blocks - 1) * blocks_space); - for(var i = r / 2; i < w - (r / 2); i += block_size + blocks_space) { - block_counter++; - block = blocks.get("0f0"); - block.randomPowerUp = randomPowerUp; - block.on_destroy = function() { - block_counter--; - this.on_colide_with("ball", function(){}); - this.flutuate = false; - this.going2destroy(150); - this.velocity = bola.original_velocity.clone(); - this.velocity.mod *= 0.1; - if(this.block_counter <= 0) { - setTimeout(function(){ - alert("You Win!"); - this._element_factory.screen.stop = true; - }.bind(this), 100); - } - }; - block.score = score; - block.going2destroy = going2destroy; - block.x = i + block_size / 2; - block.y = 120 + j * 30; + var array = level.toString().match(/\S{3}|\s/g); + array.forEach(function(item) { + if(item == " ") { + i += space_size; + return; + } else if(item == "\n") { + i = initial_i; + j += line_heigth; + return; } - } - + block_counter++; + block = blocks.get(item); + block.randomPowerUp = randomPowerUp; + block.on_destroy = function() { + block_counter--; + this.on_colide_with("ball", function(){}); + this.flutuate = false; + this.going2destroy(150); + this.velocity = bola.original_velocity.clone(); + this.velocity.mod *= 0.1; + if(this.block_counter <= 0) { + setTimeout(function(){ + alert("You Win!"); + this._element_factory.screen.stop = true; + }.bind(this), 100); + } + }; + block.score = score; + block.going2destroy = going2destroy; + block.x = i; + block.y = j; + i += block_size; + }); function randomPowerUp(velocity) { var powerUpPercentage = .1; // 10% of change to receive a power up if(Math.random() <= powerUpPercentage){ diff --git a/samples/brick_breaker_levels/level1.lvl b/samples/brick_breaker_levels/level1.lvl new file mode 100644 index 0000000..d246ef8 --- /dev/null +++ b/samples/brick_breaker_levels/level1.lvl @@ -0,0 +1,7 @@ + ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### + + ### ### ### f00 0f0 ### ### ### ### ### ### f00 0f0 ### ### ### ### ### ### f00 0f0 ### ### ### + + ### ### ### 00f 0ff ### ### ### ### ### ### 00f 0ff ### ### ### ### ### ### 00f 0ff ### ### ### + + ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### From b3c301ddf7f2a1b82ef88a90acd5a34870b7dafe Mon Sep 17 00:00:00 2001 From: Fernando Oliveira Date: Wed, 20 Apr 2016 11:12:48 -0300 Subject: [PATCH 07/18] WiP: Remove ghost --- samples/brick_breaker.js | 39 --------------------------------------- 1 file changed, 39 deletions(-) diff --git a/samples/brick_breaker.js b/samples/brick_breaker.js index c29530b..c67ff2b 100644 --- a/samples/brick_breaker.js +++ b/samples/brick_breaker.js @@ -120,7 +120,6 @@ levels.add_level(function () { score.x = 10; score.y = 10; score.set_point_type("block", 1); - score.set_point_type("ghost", {time: 30000}); score.set_point_type("powerup", {time: 30000}); @@ -246,44 +245,6 @@ levels.add_level(function () { }); } } - - var ghost = screen.createElement("Poligon"); - ghost.visible = true; - ghost.color = "#888888"; - ghost.draw_colision_area = false; - ghost.do_not_colide_with = ["Border"]; - ghost.type = "Block"; - ghost.color = "#888888"; - ghost.x = screen.width / 2; - ghost.y = 40; - ghost.add_vertice(-13, 0); - ghost.add_vertice(12, 0); - ghost.add_vertice(12, 15); - ghost.add_vertice(-13, 15); - - ghost.going2destroy = going2destroy; - - ghost.on_colide_with("ball", function(bola) { - clearInterval(this.blink_id); - score.add("ghost"); - this.do_not_colide_with = ["ball"]; - this.going2destroy(); - if(block_counter <= 0) { - setTimeout(function(){ - alert("You Win!"); - this._element_factory.screen.stop = true; - }.bind(this), 100); - } - }); - - ghost.blink_id = setInterval(function(){ - if(ghost.visible) { - ghost.do_not_colide_with = ["Border", "ball"]; - } else { - ghost.do_not_colide_with = ["Border"]; - } - ghost.visible = ! ghost.visible; - }, 5000); }); levels.next_level(); From 5312907f5776771c3e5e93e3040e84f572426616 Mon Sep 17 00:00:00 2001 From: FCO Date: Thu, 21 Apr 2016 01:22:16 -0300 Subject: [PATCH 08/18] Read multiple levels from lvl files --- .gitignore | 2 ++ element_factory.js | 17 ++++------------- aceleration.js => elements/aceleration.js | 0 arc.js => elements/arc.js | 0 border.js => elements/border.js | 0 levels.js => elements/levels.js | 2 +- lives.js => elements/lives.js | 0 point.js => elements/point.js | 0 poligon.js => elements/poligon.js | 0 quad.js => elements/quad.js | 0 retangle.js => elements/retangle.js | 0 score.js => elements/score.js | 0 velocity.js => elements/velocity.js | 0 package.json | 5 +++-- samples/brick_breaker.js | 18 +++++++++--------- samples/brick_breaker_levels/level2.lvl | 5 +++++ samples/brick_breaker_levels/levels.js | 2 ++ screen.js | 2 +- 18 files changed, 27 insertions(+), 26 deletions(-) rename aceleration.js => elements/aceleration.js (100%) rename arc.js => elements/arc.js (100%) rename border.js => elements/border.js (100%) rename levels.js => elements/levels.js (97%) rename lives.js => elements/lives.js (100%) rename point.js => elements/point.js (100%) rename poligon.js => elements/poligon.js (100%) rename quad.js => elements/quad.js (100%) rename retangle.js => elements/retangle.js (100%) rename score.js => elements/score.js (100%) rename velocity.js => elements/velocity.js (100%) create mode 100644 samples/brick_breaker_levels/level2.lvl create mode 100644 samples/brick_breaker_levels/levels.js diff --git a/.gitignore b/.gitignore index 13bae1a..e07453c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .*.sw[pon] build/ node_modules/ +samples/brick_breaker_requires.js +*.log diff --git a/element_factory.js b/element_factory.js index 171cbf5..2fa77be 100644 --- a/element_factory.js +++ b/element_factory.js @@ -1,23 +1,14 @@ module.exports = ElementFactory; -require("./lives.js"); -require("./score.js"); -require("./aceleration.js"); -require("./velocity.js"); -require("./poligon.js"); -require("./retangle.js"); -require("./quad.js"); -require("./border.js"); -require("./arc.js"); -require("./levels.js"); +require('./elements/*.js', {mode: 'expand'}); var decamelize = require("decamelize"); -var Velocity = require("./velocity.js"); -var Point = require("./point.js"); +var Velocity = require("./elements/velocity.js"); +var Point = require("./elements/point.js"); function ElementFactory() { } ElementFactory.prototype = { createElement: function(type_class, params) { - var file = "./" + decamelize(type_class) + ".js"; + var file = "./elements/" + decamelize(type_class) + ".js"; var Class = require(file); var tmp_obj = new Class(params); tmp_obj._class = type_class; diff --git a/aceleration.js b/elements/aceleration.js similarity index 100% rename from aceleration.js rename to elements/aceleration.js diff --git a/arc.js b/elements/arc.js similarity index 100% rename from arc.js rename to elements/arc.js diff --git a/border.js b/elements/border.js similarity index 100% rename from border.js rename to elements/border.js diff --git a/levels.js b/elements/levels.js similarity index 97% rename from levels.js rename to elements/levels.js index a66a326..f759cfe 100644 --- a/levels.js +++ b/elements/levels.js @@ -9,7 +9,7 @@ Levels.prototype = { separator: ": ", levels: null, generic: function(){}, - current_level: -1, + current_level: 0, starter: function(){}, add_level: function(level) { diff --git a/lives.js b/elements/lives.js similarity index 100% rename from lives.js rename to elements/lives.js diff --git a/point.js b/elements/point.js similarity index 100% rename from point.js rename to elements/point.js diff --git a/poligon.js b/elements/poligon.js similarity index 100% rename from poligon.js rename to elements/poligon.js diff --git a/quad.js b/elements/quad.js similarity index 100% rename from quad.js rename to elements/quad.js diff --git a/retangle.js b/elements/retangle.js similarity index 100% rename from retangle.js rename to elements/retangle.js diff --git a/score.js b/elements/score.js similarity index 100% rename from score.js rename to elements/score.js diff --git a/velocity.js b/elements/velocity.js similarity index 100% rename from velocity.js rename to elements/velocity.js diff --git a/package.json b/package.json index ac47c1e..7ec79db 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,9 @@ "description": "Framework to create javascript games", "main": "index.js", "scripts": { - "build": "rm -rf build || true; mkdir -p build; cp samples/*.html build; for js in samples/*.js; do browserify -t brfs $js > $(echo $js | perl -pe 's{^samples}{build}'); done", - "brickbreaker": "npm install; cd samples; budo brick_breaker.js --open --live --debug -- -t brfs" + "build": "rm -rf build || true; npm run create_brickbreaker_levels; mkdir -p build; cp samples/*.html build; for js in samples/*.js; do browserify -t brfs $js > $(echo $js | perl -pe 's{^samples}{build}'); done", + "brickbreaker": "npm install; npm run create_brickbreaker_levels; cd samples; budo brick_breaker.js --open --live --debug -- -t brfs -t require-globify", + "create_brickbreaker_levels": "cd samples/brick_breaker_levels; for level in *.lvl; do echo 'exports.'$(echo $level | cut -d. -f1)\" = require('fs').readFileSync('$PWD/$level');\"; done > levels.js" }, "repository": { "type": "git", diff --git a/samples/brick_breaker.js b/samples/brick_breaker.js index c67ff2b..b64f7b9 100644 --- a/samples/brick_breaker.js +++ b/samples/brick_breaker.js @@ -1,6 +1,6 @@ var Screen = require(".."); -require("./brick_breaker_blocks/regularBlock.js"); -var fs = require("fs"); +require('./brick_breaker_blocks/*.js', {mode: 'expand'}); +var all_levels = require("./brick_breaker_levels/levels.js"); var screen = new Screen(document.body); screen.has_gravity(0, 10); @@ -112,7 +112,7 @@ levels.starter = function () { }; }; -levels.add_level(function () { +levels.add_generic_level(function (level_number) { screen.add(levels); screen.add(lives); @@ -183,7 +183,7 @@ levels.add_level(function () { var j = initial_j; var i = initial_i; - var level = fs.readFileSync(__dirname + "/brick_breaker_levels/level1.lvl"); + var level = all_levels["level" + level_number]; var array = level.toString().match(/\S{3}|\s/g); array.forEach(function(item) { if(item == " ") { @@ -204,11 +204,11 @@ levels.add_level(function () { this.going2destroy(150); this.velocity = bola.original_velocity.clone(); this.velocity.mod *= 0.1; - if(this.block_counter <= 0) { - setTimeout(function(){ - alert("You Win!"); - this._element_factory.screen.stop = true; - }.bind(this), 100); + console.log(block_counter + " bricks"); + if(block_counter <= 0) { + alert("You Win!"); + //this._element_factory.screen.stop = true; + levels.next_level(); } }; block.score = score; diff --git a/samples/brick_breaker_levels/level2.lvl b/samples/brick_breaker_levels/level2.lvl new file mode 100644 index 0000000..bc53b0d --- /dev/null +++ b/samples/brick_breaker_levels/level2.lvl @@ -0,0 +1,5 @@ + + ### ### ### ### ### ### ### ### ### ### + ### ### ### ### ### ### ### ### ### + ### ### ### ### ### ### ### ### ### ### + ### ### ### ### ### ### ### ### ### diff --git a/samples/brick_breaker_levels/levels.js b/samples/brick_breaker_levels/levels.js new file mode 100644 index 0000000..90850f6 --- /dev/null +++ b/samples/brick_breaker_levels/levels.js @@ -0,0 +1,2 @@ +exports.level1 = require('fs').readFileSync('/Users/fernando/JSGames/samples/brick_breaker_levels/level1.lvl'); +exports.level2 = require('fs').readFileSync('/Users/fernando/JSGames/samples/brick_breaker_levels/level2.lvl'); diff --git a/screen.js b/screen.js index f9a88d1..5dbb6da 100644 --- a/screen.js +++ b/screen.js @@ -1,6 +1,6 @@ module.exports = Screen; var ElementFactory = require("./element_factory.js"); -var Aceleration = require("./aceleration.js"); +var Aceleration = require("./elements/aceleration.js"); function Screen(container) { this.container = container; From 7fe8089b663f469d759823a64c8ccee7f963e5ba Mon Sep 17 00:00:00 2001 From: Fernando Oliveira Date: Thu, 21 Apr 2016 18:50:09 -0300 Subject: [PATCH 09/18] add dependency --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 7ec79db..ac800b9 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "dependencies": { "brfs": "^1.4.3", "bulkify": "^1.2.0", - "decamelize": "^1.2.0" + "decamelize": "^1.2.0", + "require-globify": "^1.3.0" } } From b03389d9a7e8cde03e335992e2332eb502631243 Mon Sep 17 00:00:00 2001 From: Fernando Oliveira Date: Thu, 21 Apr 2016 18:52:57 -0300 Subject: [PATCH 10/18] untrack levels.js file --- .gitignore | 1 + samples/brick_breaker_levels/levels.js | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 samples/brick_breaker_levels/levels.js diff --git a/.gitignore b/.gitignore index e07453c..a0a90d0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ build/ node_modules/ samples/brick_breaker_requires.js *.log +samples/brick_breaker_levels/levels.js diff --git a/samples/brick_breaker_levels/levels.js b/samples/brick_breaker_levels/levels.js deleted file mode 100644 index 90850f6..0000000 --- a/samples/brick_breaker_levels/levels.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.level1 = require('fs').readFileSync('/Users/fernando/JSGames/samples/brick_breaker_levels/level1.lvl'); -exports.level2 = require('fs').readFileSync('/Users/fernando/JSGames/samples/brick_breaker_levels/level2.lvl'); From 33003180aa6515f5372b225aa7e4a33bea799395 Mon Sep 17 00:00:00 2001 From: Pedro Lira Date: Fri, 22 Apr 2016 14:57:49 -0300 Subject: [PATCH 11/18] Improve scripts compatibility --- .gitignore | 6 +++++- package.json | 4 ++-- .../brick_breaker_blocks/regularBlock.js | 2 +- .../{ => brickbreaker}/brick_breaker_levels/level1.lvl | 0 .../{ => brickbreaker}/brick_breaker_levels/level2.lvl | 0 .../{brick_breaker.js => brickbreaker/brickbreaker.js} | 2 +- samples/brickbreaker/generate_levels.sh | 6 ++++++ samples/index.html | 9 --------- 8 files changed, 15 insertions(+), 14 deletions(-) rename samples/{ => brickbreaker}/brick_breaker_blocks/regularBlock.js (92%) rename samples/{ => brickbreaker}/brick_breaker_levels/level1.lvl (100%) rename samples/{ => brickbreaker}/brick_breaker_levels/level2.lvl (100%) rename samples/{brick_breaker.js => brickbreaker/brickbreaker.js} (99%) create mode 100644 samples/brickbreaker/generate_levels.sh delete mode 100644 samples/index.html diff --git a/.gitignore b/.gitignore index a0a90d0..deb576f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,10 @@ -.*.sw[pon] +# Build and temporary files build/ node_modules/ samples/brick_breaker_requires.js *.log samples/brick_breaker_levels/levels.js + +# IDE files +.*.sw[pon] +*~ diff --git a/package.json b/package.json index ac800b9..2231994 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "main": "index.js", "scripts": { "build": "rm -rf build || true; npm run create_brickbreaker_levels; mkdir -p build; cp samples/*.html build; for js in samples/*.js; do browserify -t brfs $js > $(echo $js | perl -pe 's{^samples}{build}'); done", - "brickbreaker": "npm install; npm run create_brickbreaker_levels; cd samples; budo brick_breaker.js --open --live --debug -- -t brfs -t require-globify", - "create_brickbreaker_levels": "cd samples/brick_breaker_levels; for level in *.lvl; do echo 'exports.'$(echo $level | cut -d. -f1)\" = require('fs').readFileSync('$PWD/$level');\"; done > levels.js" + "brickbreaker": "npm install && npm run brickbreaker:levels && cd samples/brickbreaker && budo brickbreaker.js --open --live --debug -- -t brfs -t require-globify", + "brickbreaker:levels": "cd samples/brickbreaker && sh generate_levels.sh" }, "repository": { "type": "git", diff --git a/samples/brick_breaker_blocks/regularBlock.js b/samples/brickbreaker/brick_breaker_blocks/regularBlock.js similarity index 92% rename from samples/brick_breaker_blocks/regularBlock.js rename to samples/brickbreaker/brick_breaker_blocks/regularBlock.js index 37d7b06..07e74c5 100644 --- a/samples/brick_breaker_blocks/regularBlock.js +++ b/samples/brickbreaker/brick_breaker_blocks/regularBlock.js @@ -12,7 +12,7 @@ exports.transformation = function(data) { this.add_vertice(12, 0); this.add_vertice(12, 15); this.add_vertice(-13, 15); - this.on_colide_with("ball", function(bola) { + this.on_colide_with("ball", function(bola) { this.score.add("block"); this.on_destroy(); this.randomPowerUp(bola.velocity); diff --git a/samples/brick_breaker_levels/level1.lvl b/samples/brickbreaker/brick_breaker_levels/level1.lvl similarity index 100% rename from samples/brick_breaker_levels/level1.lvl rename to samples/brickbreaker/brick_breaker_levels/level1.lvl diff --git a/samples/brick_breaker_levels/level2.lvl b/samples/brickbreaker/brick_breaker_levels/level2.lvl similarity index 100% rename from samples/brick_breaker_levels/level2.lvl rename to samples/brickbreaker/brick_breaker_levels/level2.lvl diff --git a/samples/brick_breaker.js b/samples/brickbreaker/brickbreaker.js similarity index 99% rename from samples/brick_breaker.js rename to samples/brickbreaker/brickbreaker.js index b64f7b9..7e3762e 100644 --- a/samples/brick_breaker.js +++ b/samples/brickbreaker/brickbreaker.js @@ -1,4 +1,4 @@ -var Screen = require(".."); +var Screen = require("../.."); require('./brick_breaker_blocks/*.js', {mode: 'expand'}); var all_levels = require("./brick_breaker_levels/levels.js"); diff --git a/samples/brickbreaker/generate_levels.sh b/samples/brickbreaker/generate_levels.sh new file mode 100644 index 0000000..d2a509e --- /dev/null +++ b/samples/brickbreaker/generate_levels.sh @@ -0,0 +1,6 @@ +#!/bin/bash +cd brick_breaker_levels +for level in *.lvl; do + COMMAND="exports.$(echo $level | cut -d. -f1) = require('fs').readFileSync('$(realpath --relative-to=.. $level)');" + echo $COMMAND +done > levels.js diff --git a/samples/index.html b/samples/index.html deleted file mode 100644 index 5cd5f81..0000000 --- a/samples/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - From 0ff77428461af26fb984a5c13d0aae8ccbdce228 Mon Sep 17 00:00:00 2001 From: Pedro Lira Date: Fri, 22 Apr 2016 16:03:48 -0300 Subject: [PATCH 12/18] Improve file organization --- .../regularBlock.js => blocks/regular_block.js} | 0 samples/brickbreaker/brickbreaker.js | 8 ++++---- samples/brickbreaker/generate_levels.sh | 2 +- .../{brick_breaker_levels => levels}/level1.lvl | 0 .../{brick_breaker_levels => levels}/level2.lvl | 0 5 files changed, 5 insertions(+), 5 deletions(-) rename samples/brickbreaker/{brick_breaker_blocks/regularBlock.js => blocks/regular_block.js} (100%) rename samples/brickbreaker/{brick_breaker_levels => levels}/level1.lvl (100%) rename samples/brickbreaker/{brick_breaker_levels => levels}/level2.lvl (100%) diff --git a/samples/brickbreaker/brick_breaker_blocks/regularBlock.js b/samples/brickbreaker/blocks/regular_block.js similarity index 100% rename from samples/brickbreaker/brick_breaker_blocks/regularBlock.js rename to samples/brickbreaker/blocks/regular_block.js diff --git a/samples/brickbreaker/brickbreaker.js b/samples/brickbreaker/brickbreaker.js index 7e3762e..c4f680a 100644 --- a/samples/brickbreaker/brickbreaker.js +++ b/samples/brickbreaker/brickbreaker.js @@ -1,6 +1,6 @@ var Screen = require("../.."); -require('./brick_breaker_blocks/*.js', {mode: 'expand'}); -var all_levels = require("./brick_breaker_levels/levels.js"); +require('./blocks/*.js', {mode: 'expand'}); +var all_levels = require("./levels/levels.js"); var screen = new Screen(document.body); screen.has_gravity(0, 10); @@ -39,7 +39,7 @@ var bola = screen.createElement("Arc"); function Blocks(files) { this.blocks = {}; files.forEach(function(block) { - var conf = require("./brick_breaker_blocks/" + block + ".js"); + var conf = require("./blocks/" + block + ".js"); this.blocks[conf.symbol] = conf; }.bind(this)); @@ -59,7 +59,7 @@ Blocks.prototype = { } }; -var blocks = new Blocks(["regularBlock"]); +var blocks = new Blocks(["regular_block"]); levels.starter = function () { quad.destroy(); diff --git a/samples/brickbreaker/generate_levels.sh b/samples/brickbreaker/generate_levels.sh index d2a509e..84c2eff 100644 --- a/samples/brickbreaker/generate_levels.sh +++ b/samples/brickbreaker/generate_levels.sh @@ -1,5 +1,5 @@ #!/bin/bash -cd brick_breaker_levels +cd levels for level in *.lvl; do COMMAND="exports.$(echo $level | cut -d. -f1) = require('fs').readFileSync('$(realpath --relative-to=.. $level)');" echo $COMMAND diff --git a/samples/brickbreaker/brick_breaker_levels/level1.lvl b/samples/brickbreaker/levels/level1.lvl similarity index 100% rename from samples/brickbreaker/brick_breaker_levels/level1.lvl rename to samples/brickbreaker/levels/level1.lvl diff --git a/samples/brickbreaker/brick_breaker_levels/level2.lvl b/samples/brickbreaker/levels/level2.lvl similarity index 100% rename from samples/brickbreaker/brick_breaker_levels/level2.lvl rename to samples/brickbreaker/levels/level2.lvl From 50bbdc95334b3a2419a926c425a6c5dc695030d6 Mon Sep 17 00:00:00 2001 From: Pedro Lira Date: Fri, 22 Apr 2016 16:54:46 -0300 Subject: [PATCH 13/18] Gulp initial usage to generate brickbreaker js levels --- .gitignore | 2 +- gulpfile.js | 16 ++++++++++++++++ package.json | 11 ++++++++--- samples/brickbreaker/brickbreaker.js | 2 +- 4 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 gulpfile.js diff --git a/.gitignore b/.gitignore index deb576f..22a76cb 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ build/ node_modules/ samples/brick_breaker_requires.js *.log -samples/brick_breaker_levels/levels.js +samples/brickbreaker/levels/levels.js # IDE files .*.sw[pon] diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..9444d76 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,16 @@ +var gulp = require('gulp'); +var concat = require('gulp-concat'); +var insert = require('gulp-insert'); +var replace = require('gulp-replace'); + +gulp.task('default', function() {}); + +gulp.task('brickbreaker:levels', function() { + var levelsPath = 'samples/brickbreaker/levels/'; + gulp.src(levelsPath + '*.lvl') + .pipe(replace("\n", "\\n")) + .pipe(insert.wrap('"', '"')) + .pipe(concat('levels.js', { newLine: ',' })) + .pipe(insert.wrap('module.exports = [', '];')) + .pipe(gulp.dest(levelsPath)); +}); diff --git a/package.json b/package.json index 2231994..df04d3a 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,7 @@ "main": "index.js", "scripts": { "build": "rm -rf build || true; npm run create_brickbreaker_levels; mkdir -p build; cp samples/*.html build; for js in samples/*.js; do browserify -t brfs $js > $(echo $js | perl -pe 's{^samples}{build}'); done", - "brickbreaker": "npm install && npm run brickbreaker:levels && cd samples/brickbreaker && budo brickbreaker.js --open --live --debug -- -t brfs -t require-globify", - "brickbreaker:levels": "cd samples/brickbreaker && sh generate_levels.sh" + "brickbreaker": "npm install && gulp brickbreaker:levels && cd samples/brickbreaker && budo brickbreaker.js --open --live --debug -- -t brfs -t require-globify" }, "repository": { "type": "git", @@ -20,7 +19,13 @@ "homepage": "https://github.com/FCO/JSGames", "devDependencies": { "browserify": "^13.0.0", - "budo": "^8.2.1" + "budo": "^8.2.1", + "gulp": "^3.9.1", + "gulp-concat": "^2.6.0", + "gulp-insert": "^0.5.0", + "gulp-replace": "^0.5.4", + "gulp-minify": "^0.0.10", + "gulp-util": "^3.0.7" }, "dependencies": { "brfs": "^1.4.3", diff --git a/samples/brickbreaker/brickbreaker.js b/samples/brickbreaker/brickbreaker.js index c4f680a..3017d1d 100644 --- a/samples/brickbreaker/brickbreaker.js +++ b/samples/brickbreaker/brickbreaker.js @@ -183,7 +183,7 @@ levels.add_generic_level(function (level_number) { var j = initial_j; var i = initial_i; - var level = all_levels["level" + level_number]; + var level = all_levels[level_number - 1]; var array = level.toString().match(/\S{3}|\s/g); array.forEach(function(item) { if(item == " ") { From 724ec5099fca47f3d6cbeacdda0f79b95c8eb8ea Mon Sep 17 00:00:00 2001 From: Pedro Lira Date: Fri, 22 Apr 2016 17:24:02 -0300 Subject: [PATCH 14/18] Move brickbreaker tasks to right directory --- gulpfile.js | 13 ------------- samples/brickbreaker/gulpfile.js | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 samples/brickbreaker/gulpfile.js diff --git a/gulpfile.js b/gulpfile.js index 9444d76..876ff83 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,16 +1,3 @@ var gulp = require('gulp'); -var concat = require('gulp-concat'); -var insert = require('gulp-insert'); -var replace = require('gulp-replace'); gulp.task('default', function() {}); - -gulp.task('brickbreaker:levels', function() { - var levelsPath = 'samples/brickbreaker/levels/'; - gulp.src(levelsPath + '*.lvl') - .pipe(replace("\n", "\\n")) - .pipe(insert.wrap('"', '"')) - .pipe(concat('levels.js', { newLine: ',' })) - .pipe(insert.wrap('module.exports = [', '];')) - .pipe(gulp.dest(levelsPath)); -}); diff --git a/samples/brickbreaker/gulpfile.js b/samples/brickbreaker/gulpfile.js new file mode 100644 index 0000000..7fcdb42 --- /dev/null +++ b/samples/brickbreaker/gulpfile.js @@ -0,0 +1,16 @@ +var gulp = require('gulp'); +var concat = require('gulp-concat'); +var insert = require('gulp-insert'); +var replace = require('gulp-replace'); + +gulp.task('default', function() {}); + +gulp.task('brickbreaker:levels', function() { + var levelsPath = 'levels/'; + gulp.src(levelsPath + '*.lvl') + .pipe(replace("\n", "\\n")) + .pipe(insert.wrap('"', '"')) + .pipe(concat('levels.js', { newLine: ',' })) + .pipe(insert.wrap('module.exports = [', '];')) + .pipe(gulp.dest(levelsPath)); +}); From e9cc51067262655c96c621adfcff4c7e6cc3438b Mon Sep 17 00:00:00 2001 From: FCO Date: Sun, 24 Apr 2016 23:43:44 -0300 Subject: [PATCH 15/18] WiP: playing with gulp --- gulpfile.js | 5 +- package.json | 7 +-- samples/brickbreaker/gulpfile.js | 47 +++++++++++++++++-- samples/brickbreaker/index.html | 9 ++++ .../{brickbreaker.js => index.js} | 0 5 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 samples/brickbreaker/index.html rename samples/brickbreaker/{brickbreaker.js => index.js} (100%) diff --git a/gulpfile.js b/gulpfile.js index 876ff83..123ef1f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,3 +1,6 @@ -var gulp = require('gulp'); +var gulp = require('gulp'); +var requireDir = require("require-dir-all"); + +requireDir("./samples", {recursive: true, includeFiles: /^gulpfile.js$/}); gulp.task('default', function() {}); diff --git a/package.json b/package.json index df04d3a..65ed332 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "description": "Framework to create javascript games", "main": "index.js", "scripts": { - "build": "rm -rf build || true; npm run create_brickbreaker_levels; mkdir -p build; cp samples/*.html build; for js in samples/*.js; do browserify -t brfs $js > $(echo $js | perl -pe 's{^samples}{build}'); done", - "brickbreaker": "npm install && gulp brickbreaker:levels && cd samples/brickbreaker && budo brickbreaker.js --open --live --debug -- -t brfs -t require-globify" + "build": "npm install && gulp brickbreaker:build", + "brickbreaker": "npm install && gulp brickbreaker" }, "repository": { "type": "git", @@ -21,10 +21,11 @@ "browserify": "^13.0.0", "budo": "^8.2.1", "gulp": "^3.9.1", + "gulp-browserify2": "0.0.2", "gulp-concat": "^2.6.0", "gulp-insert": "^0.5.0", - "gulp-replace": "^0.5.4", "gulp-minify": "^0.0.10", + "gulp-replace": "^0.5.4", "gulp-util": "^3.0.7" }, "dependencies": { diff --git a/samples/brickbreaker/gulpfile.js b/samples/brickbreaker/gulpfile.js index 7fcdb42..7015ebf 100644 --- a/samples/brickbreaker/gulpfile.js +++ b/samples/brickbreaker/gulpfile.js @@ -1,7 +1,10 @@ -var gulp = require('gulp'); -var concat = require('gulp-concat'); -var insert = require('gulp-insert'); -var replace = require('gulp-replace'); +var gulp = require('gulp'); +var concat = require('gulp-concat'); +var insert = require('gulp-insert'); +var replace = require('gulp-replace'); +var browserify = require("gulp-browserify2"); +var inject = require('gulp-inject'); +var webserver = require('gulp-webserver'); gulp.task('default', function() {}); @@ -14,3 +17,39 @@ gulp.task('brickbreaker:levels', function() { .pipe(insert.wrap('module.exports = [', '];')) .pipe(gulp.dest(levelsPath)); }); + +gulp.task('brickbreaker:build', ["brickbreaker:levels"], function() { + var js = gulp + .src("samples/brickbreaker/index.js") + .pipe(browserify({ + fileName: "brickbreaker.js", + transform: [require("brfs"), require("require-globify")], + options: { + debug: true + } + })) + .pipe(gulp.dest("build")) + ; + + gulp + .src("samples/brickbreaker/*.html") + .pipe(gulp.dest("build")) + .pipe(inject(js, {relative: true})) + .pipe(gulp.dest("build")) + ; +}); + +gulp.task("brickbreaker:watch", ["brickbreaker:build"], function() { + gulp.watch(["index.js", "screen.js", "elements/**.js", "samples/brickbreaker/**.js", "samples/brickbreaker/**.lvl", "**.json"], ['brickbreaker:build']); +}); + +gulp.task("brickbreaker", ["brickbreaker:watch"], function() { + gulp + .src("build/") + .pipe(webserver({ + livereload: true, + directoryListing: false, + open: true + })) + ; +}); diff --git a/samples/brickbreaker/index.html b/samples/brickbreaker/index.html new file mode 100644 index 0000000..ec99d63 --- /dev/null +++ b/samples/brickbreaker/index.html @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/samples/brickbreaker/brickbreaker.js b/samples/brickbreaker/index.js similarity index 100% rename from samples/brickbreaker/brickbreaker.js rename to samples/brickbreaker/index.js From cf96a8186d280ebb0359aa98207fcf29ad04830f Mon Sep 17 00:00:00 2001 From: Fernando Oliveira Date: Mon, 25 Apr 2016 11:09:56 -0300 Subject: [PATCH 16/18] Fix gulp changes --- package.json | 5 ++++- samples/brickbreaker/gulpfile.js | 2 +- samples/brickbreaker/index.html | 1 - 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 65ed332..231cf50 100644 --- a/package.json +++ b/package.json @@ -23,10 +23,13 @@ "gulp": "^3.9.1", "gulp-browserify2": "0.0.2", "gulp-concat": "^2.6.0", + "gulp-inject": "^4.0.0", "gulp-insert": "^0.5.0", "gulp-minify": "^0.0.10", "gulp-replace": "^0.5.4", - "gulp-util": "^3.0.7" + "gulp-util": "^3.0.7", + "gulp-webserver": "^0.9.1", + "require-dir-all": "^0.4.9" }, "dependencies": { "brfs": "^1.4.3", diff --git a/samples/brickbreaker/gulpfile.js b/samples/brickbreaker/gulpfile.js index 7015ebf..23e83c8 100644 --- a/samples/brickbreaker/gulpfile.js +++ b/samples/brickbreaker/gulpfile.js @@ -9,7 +9,7 @@ var webserver = require('gulp-webserver'); gulp.task('default', function() {}); gulp.task('brickbreaker:levels', function() { - var levelsPath = 'levels/'; + var levelsPath = 'samples/brickbreaker/levels/'; gulp.src(levelsPath + '*.lvl') .pipe(replace("\n", "\\n")) .pipe(insert.wrap('"', '"')) diff --git a/samples/brickbreaker/index.html b/samples/brickbreaker/index.html index ec99d63..7d1e365 100644 --- a/samples/brickbreaker/index.html +++ b/samples/brickbreaker/index.html @@ -3,7 +3,6 @@ - From 9a2b893c53c0e391f5d87627337bf554225bc1f7 Mon Sep 17 00:00:00 2001 From: FCO Date: Mon, 25 Apr 2016 23:38:55 -0300 Subject: [PATCH 17/18] Using module concept on gulpfiles --- README.md | 2 +- gulpfile.js | 55 ++++++++++++++++++++++++++++++-- package.json | 8 +++-- samples/brickbreaker/gulpfile.js | 16 ++++------ 4 files changed, 66 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 0e8774c..c47a192 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Framework to create javascript games ## Samples: ### Brick Breaker -http://fco.github.io/JSGames +http://fco.github.io/JSGames/brickbreaker ## Test: npm run brickbreaker diff --git a/gulpfile.js b/gulpfile.js index 123ef1f..bbf27ed 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,6 +1,55 @@ var gulp = require('gulp'); -var requireDir = require("require-dir-all"); +var chug = require('gulp-chug'); +var flatten = require('gulp-flatten'); +var glob = require('glob'); +var path = require('path'); +var webserver = require('gulp-webserver'); -requireDir("./samples", {recursive: true, includeFiles: /^gulpfile.js$/}); +gulp.task('default', ['watch'], function() { + gulp + .src("build/") + .pipe(webserver({ + livereload: true, + open: true, + directoryListing: { + enable: true, + path: "build" + } + })) + ; +}); -gulp.task('default', function() {}); +gulp.task("build", function() { + gulp + .src( './samples/**/gulpfile.js', { read: false } ) + .pipe( chug({tasks: ["build"]}) ) + ; + + gulp + .src( './samples/**/build/*' ) + .pipe( flatten({ includeParents: 1}) ) + .pipe( gulp.dest('build') ) + ; +}); + +gulp.task("watch", ["build"], function() { + gulp.watch(["**.js", "**.json"], ['build']); +}); + +glob.sync("samples/*").forEach(function(filepath) { + var sample = path.basename(filepath); + gulp.task(sample, function() { + gulp + .src( filepath + '/gulpfile.js', { read: false } ) + .pipe( chug() ) + ; + }); + ["build", "watch"].forEach(function(task) { + gulp.task(sample + ":" + task, function() { + gulp + .src( filepath + '/gulpfile.js', { read: false } ) + .pipe( chug({tasks: [task]}) ) + ; + }); + }); +}); diff --git a/package.json b/package.json index 65ed332..8c65283 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Framework to create javascript games", "main": "index.js", "scripts": { - "build": "npm install && gulp brickbreaker:build", + "build": "npm install && gulp build", "brickbreaker": "npm install && gulp brickbreaker" }, "repository": { @@ -20,13 +20,17 @@ "devDependencies": { "browserify": "^13.0.0", "budo": "^8.2.1", + "glob": "^7.0.3", "gulp": "^3.9.1", "gulp-browserify2": "0.0.2", + "gulp-chug": "^0.5.1", "gulp-concat": "^2.6.0", + "gulp-flatten": "^0.2.0", "gulp-insert": "^0.5.0", "gulp-minify": "^0.0.10", "gulp-replace": "^0.5.4", - "gulp-util": "^3.0.7" + "gulp-util": "^3.0.7", + "path": "^0.12.7" }, "dependencies": { "brfs": "^1.4.3", diff --git a/samples/brickbreaker/gulpfile.js b/samples/brickbreaker/gulpfile.js index 7015ebf..b5417f2 100644 --- a/samples/brickbreaker/gulpfile.js +++ b/samples/brickbreaker/gulpfile.js @@ -6,9 +6,7 @@ var browserify = require("gulp-browserify2"); var inject = require('gulp-inject'); var webserver = require('gulp-webserver'); -gulp.task('default', function() {}); - -gulp.task('brickbreaker:levels', function() { +gulp.task('levels', function() { var levelsPath = 'levels/'; gulp.src(levelsPath + '*.lvl') .pipe(replace("\n", "\\n")) @@ -18,9 +16,9 @@ gulp.task('brickbreaker:levels', function() { .pipe(gulp.dest(levelsPath)); }); -gulp.task('brickbreaker:build', ["brickbreaker:levels"], function() { +gulp.task('build', ["levels"], function() { var js = gulp - .src("samples/brickbreaker/index.js") + .src("index.js") .pipe(browserify({ fileName: "brickbreaker.js", transform: [require("brfs"), require("require-globify")], @@ -32,18 +30,18 @@ gulp.task('brickbreaker:build', ["brickbreaker:levels"], function() { ; gulp - .src("samples/brickbreaker/*.html") + .src("*.html") .pipe(gulp.dest("build")) .pipe(inject(js, {relative: true})) .pipe(gulp.dest("build")) ; }); -gulp.task("brickbreaker:watch", ["brickbreaker:build"], function() { - gulp.watch(["index.js", "screen.js", "elements/**.js", "samples/brickbreaker/**.js", "samples/brickbreaker/**.lvl", "**.json"], ['brickbreaker:build']); +gulp.task("watch", ["build"], function() { + gulp.watch(["**.js", "**.lvl", "**.json"], ['build']); }); -gulp.task("brickbreaker", ["brickbreaker:watch"], function() { +gulp.task("default", ["watch"], function() { gulp .src("build/") .pipe(webserver({ From df5d09ecdc0606c9d2e3399729c5568da96e7d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Corr=C3=AAa=20de=20Oliveira?= Date: Thu, 17 Oct 2019 12:06:14 +0100 Subject: [PATCH 18/18] Fix old bug --- samples/brickbreaker/generate_levels.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/brickbreaker/generate_levels.sh b/samples/brickbreaker/generate_levels.sh index 84c2eff..a3bda3e 100644 --- a/samples/brickbreaker/generate_levels.sh +++ b/samples/brickbreaker/generate_levels.sh @@ -1,6 +1,6 @@ #!/bin/bash cd levels for level in *.lvl; do - COMMAND="exports.$(echo $level | cut -d. -f1) = require('fs').readFileSync('$(realpath --relative-to=.. $level)');" + COMMAND="exports.$(echo $level | cut -d. -f1) = require('fs').readFileSync('levels/$level');" echo $COMMAND done > levels.js